est-il possible de fournir une implémentation de l'opérateur de l'égalité C # (==) en F #?
EDIT STRY>: P> Ce code: P> static member (=) (left : Foo, right : Foo) =
3 Réponses :
Vous recherchez surcharge de l'opérateur dans F # ? P >
Les différents opérateurs sont définis en CIL, la surcharge de surcharge de chargement d'un opérateur de F # surchargerait-la dans C #, VB.NET et toute autre langue .NET qui prend en charge cet opérateur. P>
J'étais sous la fausse impression que la surcharge = code> in f # produit différent IL que sur la surcharge
== code> dans c #. C'est toujours un peu bizarre imo. J'ai mis à jour la question avec les détails.
le figuré:
type Foo() = static member op_Equality (left : Foo, right : Foo) =
Vraisemblablement, OP_EQUALITY CODE> est favorisé sur
(=) code> puisque ce dernier ressemble à ce que cela devrait affecter l'opérateur d'égalité dans F #. C'est-à-dire que le comportement du code suivant pourrait être déroutant:
type T() =
static member (=)(x:T,y:T) = true
let eq = (=) (T()) (T()) // false???
Voulez-vous une fonction F # qui se comporte de la même manière que l'opérateur d'égalité C #? C'est-à-dire en utilisant
opérateur == code> si disponible et appelant
objet.equals code> sinon?
Je voulais un opérateur d'égalité qui serait appelé lorsque
== code> est utilisé à partir de C #.