我正在尝试以函数式的方式创建一个字典。我已经用以下代码成功地将两个字典连接在一起:
let d1 = dict [(1, "one"); (2, "two")]
let d2 = dict [(4, "four")]
let d = List.ofSeq d1 @ List.ofSeq d2
这是在F#中使用不可变字典的正确方式吗?它似乎有点复杂。
我正在尝试以函数式的方式创建一个字典。我已经用以下代码成功地将两个字典连接在一起:
let d1 = dict [(1, "one"); (2, "two")]
let d2 = dict [(4, "four")]
let d = List.ofSeq d1 @ List.ofSeq d2
dict
函数主要是帮助我们从列表中创建字典,如果您已经有一个包含所有项目的列表。当您想添加元素时,它并不是很有用 - 也就是说,创建一个新的字典,其中包含原始字典的所有元素以及一些新元素。
在这种情况下,最好使用Map
类型。
// Create map from a list
let m1 = Map.ofSeq [ (1, "one"); (2, "two") ]
// Create map from original map by adding one element
let m2 = m1.Add(4, "four")
如果要将m1
的所有元素加到m2
中,您可能会编写以下代码:
let newM2 = m1 |> Seq.fold (fun m (KeyValue(k, v)) -> Map.add k v m) m2