¿Diferencia entre <=> y == en Ruby?
-
25-10-2019 - |
Pregunta
¿Cuáles son sus diferencias? Viniendo de un fondo de Java, me parece <=> es lo mismo que Java's Equals (), mientras que == es para comparación de referencia directa. ¿Es esto correcto?
Solución
==
solo mide si dos objetos son iguales, mientras que <=>
debe devolver -1 si el primer objeto es más pequeño, 0 si es igual y 1 si el primer objeto es mayor.
Si define un <=>
Método para su clase, obtendrá todos los otros operadores de comparación definidos también (==
, <
, >
, y así).
Otros consejos
No puedo decir que no estoy tratando de promocionarme, pero escribí un tutorial de larga duración sobre operadores de comparación e igualdad en Ruby: "Conceptos básicos de Ruby - Operadores de igualdad en Ruby"
Allí puede ver las diferencias entre todos los operadores de igualdad, incluidos <=>, == y === (y las implicaciones de implementarlos, incluida la implementación del método hash).
==
es como el de Java equals
, tiempo <=>
es como compareTo
. ==
Compara los dos objetos y devuelve si son equivalentes. a <=> b
compara los dos objetos y devuelve 1 si a
es más grande, 0 si son iguales y -1
si b
es más grande.