2015-11-10 64 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