Il semble que l'on doive remplacer Equality afin de remplacer la comparaison.Comparaison personnalisée et égalité dans fsharp
Est-ce vrai? Y a-t-il une raison pour laquelle je suis absent?
Il semble que l'on doive remplacer Equality afin de remplacer la comparaison.Comparaison personnalisée et égalité dans fsharp
Est-ce vrai? Y a-t-il une raison pour laquelle je suis absent?
Non, il est possible d'avoir seulement la comparaison personnalisée
[<CustomComparison>]
[<StructuralEquality>]
type Node =
| Data of string
| Nil
with
interface System.IComparable with
member x.CompareTo y = 0
Notez bien que ce code produira un recomending d'avertissement que vous mettre en œuvre et l'égalité du type. C'est généralement une bonne idée. Si vous passez par la difficulté d'implémenter la comparaison, alors l'égalité est directe (Compare == 0).
Je ne sais pas pourquoi, mon VS affichait une erreur. c'était probablement juste la lenteur de l'inférence de type ... – nicolas
Merci. au moins j'en suis sûr maintenant. – nicolas
@nicolas VS utilisera le soulignement rouge sur la définition de 'Node'. Mais ce n'est qu'un avertissement et non une erreur. À mon humble avis, ils ont probablement utilisé la mauvaise couleur pour ce gribouillis – JaredPar
Voir [le blog de Don Syme] (http://blogs.msdn.com/b/dsyme/archive/2009/11/08/equality-and-comparison-constraints-in-f-1-9-7. aspx). – Daniel