Différence entre == et dans <=> Ruby?
-
25-10-2019 - |
Question
Quelles sont leurs différences? Issu d'un milieu Java, il me semble bien est le même <=> que les égaux de Java (), alors que == est pour la comparaison de référence directe. Est-ce exact?
La solution
==
seules les mesures, si deux objets sont égaux, alors que <=>
doit retourner -1 si le premier objet est plus petit, 0 si elles sont égales, et 1 si le premier objet est plus grand.
Si vous définissez une méthode <=>
pour votre classe, vous obtiendrez tous les autres opérateurs de comparaison définis ainsi (==
, <
, >
, etc.).
Autres conseils
ne peut pas dire que je ne cherche pas à me promouvoir, mais j'écrit un tutoriel de pleine longueur sur les opérateurs de comparaison et de l'égalité dans Ruby: "Ruby Basics - opérateurs d'égalité dans Ruby"
Là, vous pouvez voir les différences entre tous les opérateurs d'égalité, y compris <=>, == et === (et les conséquences de leur mise en œuvre, y compris la mise en œuvre de la méthode de hachage).
==
est comme le equals
de Java, tandis que <=>
est comme compareTo
. ==
compare les deux objets et retourne si elles sont équivalentes. a <=> b
compare les deux objets et renvoie 1 si a
est plus grand, 0 si elles sont les mêmes et -1
si b
est plus grand.