[英]How to create a copy of a map in f#?
let students =
Map.empty.
Add("ABC", "97").
Add("Jill", "98");;
printfn "Map - students: %A" students
我知道這將創建一個名為學生的地圖。 我在想一種方法來創建此地圖的副本,具有相同的鍵和值。 我檢查了 f# 的文檔,並沒有找到任何克隆/創建地圖副本的方法。
F# 映射是不可變的。 這意味着“更改”地圖實際上意味着創建一個帶有一些細微更改的副本。 復制過程使用技巧使其比完整復制快得多。 對於大部分數據,新版本實際上可以指向舊版本。 這是安全的,因為映射是不可變的:它們永遠不會改變。
這意味着沒有可能的理由復制地圖,除了預熱你的 CPU 😆
這同樣適用於 F# 中的List
和Set
,因為它們也是不可變的。 習慣使用不可變的數據結構需要一段時間,但一旦你習慣了,生活就會變得更輕松。
順便說一句,您可以使用較少的代碼創建地圖,如下所示:
let students =
[ "ABC", "97"
"Jill", "98" ]
|> Map
這是一種方法。
let copy =
students
|> Seq.map (fun pair -> pair.Key, pair.Value)
|> Map
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.