F# F+中的等式推理;具有可变字段的记录

F# F+中的等式推理;具有可变字段的记录,f#,comparison,equality,mutable,inference,F#,Comparison,Equality,Mutable,Inference,通用的相等/比较成员设计准则是不在可变引用类型上实现结构相等,而是查看具有可变字段的F#记录类型: type Value = { mutable value: int } let mutableRecord = { value = 1 } let xs = Map.ofList [ mutableRecord, "abc" { value = 2 }, "def" ] let abc = Map.find { value=1 } xs mutabl

通用的相等/比较成员设计准则是不在可变引用类型上实现结构相等,而是查看具有可变字段的F#记录类型:

type Value = { mutable value: int }

let mutableRecord = { value = 1 }
let xs = Map.ofList [ mutableRecord, "abc"
                      { value = 2 }, "def" ]

let abc = Map.find { value=1 } xs
mutableRecord.value <- 3
let abc = Map.find { value=3 } xs // KeyNotFoundException!
type Value={可变值:int}
设mutableRecord={value=1}
设xs=Map.ofList[mutableRecord,“abc”
{value=2},“def”]
设abc=Map.find{value=1}xs

这不是一个不合理的立场

也许有一些聪明的方法可以有效地利用这个特性,尽管我对它的思考还不够深入。这与将可变类型放入
字典
中时基本相同,您得到了应得的结果。(语言不能防止每一种误用,这就是为什么我们有设计指南和程序员判断来填补空白:))

不管怎么说,现在没办法改变了