2015-11-10 58 views
1

在F#中声明和初始化字典是否有一种比较简洁的方法?初始化字典的最短途径

let grid = Map.empty 
       .Add(0, true).Add(1, true).Add(2, true) 
       .Add(3, true).Add(4, false).Add(5, true) 
       .Add(6, true).Add(7, true).Add(8, true) 

回答

5

我用:

[0, true 
1, false 
2, true] 
|> Map.ofList 
+0

出于好奇,这可以在一条线上完成吗? –

+1

@ScottNimrod是的,只需使用';'作为分隔符:'[1,true; 2,错误; 3,false]',','用于创建元组,'''作为列表元素分隔符。 – CaringDev

2

@ CaringDev的回答是不错的,但还有另一种考虑。

数组的元素具有键/值的关系,所以最佳的清晰度我用了如下的定义:

let (=>) x y = x,y 

这让我写一个非常可读,self-documented这样的代码:

let myValue1 = 
    Map [ 
     0 => true 
     1 => false 
     2 => false 
    ] 

另外,let makeMap x = new Map<_,_>(x)可让您以其他风格编写代码,具体取决于您团队的编码约定:

let myValue2 = 
    [ 
     0 => true 
     1 => false 
     2 => false 
    ] |> makeMap