par*_*thc 2 f# dictionary f#-3.0
let students =
Map.empty.
Add("ABC", "97").
Add("Jill", "98");;
printfn "Map - students: %A" students
Run Code Online (Sandbox Code Playgroud)
我知道这将创建一个名为学生的地图。我在想一种方法来创建此地图的副本,具有相同的键和值。我检查了 f# 的文档,并没有找到任何克隆/创建地图副本的方法。
F# 映射是不可变的。这意味着“更改”地图实际上意味着创建一个带有一些细微更改的副本。复制过程使用技巧使其比完整复制快得多。对于大部分数据,新版本实际上可以指向旧版本。这是安全的,因为映射是不可变的:它们永远不会改变。
这意味着没有可能的理由复制地图,除了预热你的 CPU
这同样适用于List和Set在 F# 中,因为它们也是不可变的。习惯使用不可变的数据结构需要一段时间,但一旦你习惯了,生活就会变得更轻松。
顺便说一句,您可以使用较少的代码创建地图,如下所示:
let students =
[ "ABC", "97"
"Jill", "98" ]
|> Map
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |