fsharp中的自定义比较和相等

时间:2012-03-02 16:28:42

标签: f# comparison

似乎必须覆盖Equality才能覆盖比较。

这是真的吗?我错过了什么理由?

1 个答案:

答案 0 :(得分:6)

没有。可以只进行自定义比较

[<CustomComparison>]
[<StructuralEquality>]
type Node =
    | Data of string
    | Nil

    with

    interface System.IComparable with 
        member x.CompareTo y = 0

请注意,此代码会产生警告,并建议您在类型上实现相等性。这通常是一个好主意。如果你经历了实现比较的麻烦,那么直接相等(比较== 0)。