作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有这个 C# 示例,它将根据整数数组创建奇数和偶数字典:
int[] values = new int[]
{
1,
2,
3,
5,
7
};
Dictionary<int, string> dictionary =
values.ToDictionary(key => key, val => (val % 2 == 1) ? "Odd" : "Even");
// Display all keys and values.
foreach (KeyValuePair<int, string> pair in dictionary)
{
Console.WriteLine(pair);
}
输出是:
[1, Odd]
[2, Even]
[3, Odd]
[5, Odd]
[7, Odd]
我想在 F# 中使用 ToDictionary 进行类似的操作,到目前为止:
let values = [| 1; 2; 3; 5; 7 |]
let dictionary = values.ToDictionary( ??? )
// Display all keys and values.
for d in dictionary do
printfn "%d %s" d.Key d.Value
但是我将如何编写 ToDictionary 中的逻辑?
最佳答案
您当然可以使用 F# 中的 ToDictionary
(以及所有其他 LINQ 方法),但有时使用 F# 库中的函数更为惯用。
如果我想创建这个字典,我会使用这样的东西:
let values = [| 1; 2; 3; 5; 7 |]
let dictionary = dict [ for v in values -> v, if v % 2 = 1 then "Odd" else "Even" ]
这里的 dict
是一个 F# 库函数,它从包含键和值的元组创建字典(元组是使用 ,
创建的,所以我们使用 v
作为键,字符串作为值)。
关于c# - 如何让 ToDictionary 在 F# 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060551/
我是一名优秀的程序员,十分优秀!