2012-03-02 8 views
3

比較をオーバーライドするには、Equalityをオーバーライドする必要があるようです。fsharpのカスタム比較と等価性

本当ですか?私が行方不明の理由はありますか?

+2

[Don Symeのブログ](http://blogs.msdn.com/b/dsyme/archive/2009/11/08/equality-and-comparison-constraints-in-f-1-9-7)を参照してください。 aspx)。 – Daniel

答えて

5

いいえそれは、このコードは、あなたが同様のタイプの平等を実現する警告recomendingを生成することをいえだけ持つカスタム比較

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

    with 

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

注意することが可能です。これは一般的には良い考えです。あなたが比較を実装することの手間を経ると、平等はまっすぐ進む(比較== 0)。

+0

なぜ私のVSがエラーを表示していたのかわかりません。それはたぶんタイプ推論の遅さだった... – nicolas

+0

ありがとう。少なくとも私は今それを確信しています。 – nicolas

+0

@nicolas VSは 'Node'の定義に赤い下線を使います。しかしそれはただの警告であり、誤りではありません。 IMHO彼らはおそらく間違った色を使用してsquiggle – JaredPar

関連する問題