急于宣布一个空的地图/词典?

时间:2019-01-07 12:41:00

标签: f#

我想用Map初始化一个递归函数。要声明一个带有值的只读字典,我们可以做:

fd is nil

Try it online!

现在,我想创建一个空字典。如何实现?

我正在寻找类似的东西:

let dictionary1  = dict [ (1, "a"); (2, "b"); (3, "c") ]       

3 个答案:

答案 0 :(得分:5)

您可以这样做:

let dictionary1  = dict []

for elem in dictionary1 do
   printfn "Key: %d Value: %s" elem.Key elem.Value

,这将为您提供一个空字典。

printfn的用法向类型推断引擎显示键和值的正确类型。

如果要明确,则可以通过几种方式指定类型:

let dictionary1 = dict Seq.empty<int * string>
let dictionary1 = dict ([] : (int * string) list)
let dictionary1 = dict [] : System.Collections.Generic.IDictionary<int, string>
let dictionary1 : System.Collections.Generic.IDictionary<int, string> = dict []

答案 1 :(得分:1)

由于地图是.NET Dictionary,因此可以

let dictionary1 = new System.Collections.Generic.Dictionary<int, string>()

我不知道是否有更好的方法。

答案 2 :(得分:1)

由于您要求提供地图/词典,因此这里提供了Map的其他两种解决方案:

let dictionary1 : Map<int, string> = Map.empty
let dictionary1 = Map<int, string> []

source