作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
let students =
Map.empty.
Add("ABC", "97").
Add("Jill", "98");;
printfn "Map - students: %A" students
我知道这会创建一个名为 students 的 map 。我正在考虑一种方法来创建具有相同键和值的此 map 的副本。我检查了 f# 的文档,但没有找到任何克隆/创建 map 副本的方法。
最佳答案
F# 映射是不可变的。这意味着“更改” map 实际上意味着创建一个略有改动的副本。复制过程使用技巧使其比完整复制快得多。新版本实际上可以将大部分数据指向旧版本。这样做是安全的,因为 map 是不可变的:它们永远不会改变。
这意味着没有理由复制 map ,除了预热你的 CPU 😆
这同样适用于 F# 中的 List
和 Set
,因为它们也是不可变的。习惯使用不可变数据结构需要一段时间,但一旦你习惯了,生活就会变得更轻松。
顺便说一下,您可以像这样用更少的代码创建 map :
let students =
[ "ABC", "97"
"Jill", "98" ]
|> Map
关于dictionary - 如何在 f# 中创建 map 副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64546727/
我是一名优秀的程序员,十分优秀!