我正在尝试以功能方式创建字典.我玩了一下,并能够用这段代码连接两个词典:
let d1 = dict [(1, "one"); (2, "two")]
let d2 = dict [(4, "four")]
let d = List.ofSeq d1 @ List.ofSeq d2
Run Code Online (Sandbox Code Playgroud)
这是在F#中使用不可变字典的正确方法吗?看起来有点复杂.
Tom*_*cek 21
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")
Run Code Online (Sandbox Code Playgroud)
要添加m1to的所有元素m2,您可能会写:
let newM2 = m1 |> Seq.fold (fun m (KeyValue(k, v)) -> Map.add k v m) m2
Run Code Online (Sandbox Code Playgroud)