F#immutable集和映射的set1 = set2
如何工作?他们会做出正确的集合/地图平等吗?
文档说:
基于二叉树的不可变集,其中比较是F# 结构比较函数,可能使用的实现 关键值的IComparable接口。
它们基于二叉树,因此可能不会根据订单元素插入确切的形式?如此天真地使用F#结构比较函数是行不通的......
我在文档中找不到任何相关内容。我错过了吗?
答案 0 :(得分:10)
是的,显然它会正常工作。
查看the source,Equals
被覆盖并使用GetEnumerator
并检查它们是否以相同的顺序返回相同的元素。这些应该按照this question中的顺序排列,因为Set.toSeq
的文档说:“集合元素的有序序列。”
Jon Harrop和Don Syme在“F#for Scientists”一书中也提到了这一点: