Разница между <=> и == в Ruby?
-
25-10-2019 - |
Вопрос
Каковы их различия? Исходя из фона Java, мне кажется, что <=> это то же самое, что Java's Equals (), а == для прямого справочного сравнения. Это правильно?
Решение
==
только измерения, если два объекта равны, тогда как <=>
Следует вернуть -1, если первый объект меньше, 0, если они равны, и 1, если первый объект больше.
Если вы определите <=>
Метод для вашего класса, вы также получите все другие операторы сравнения (==
, <
, >
, и так далее).
Другие советы
Не могу сказать, что я не пытаюсь продвигать себя, но я написал полноценное руководство о сравнении и операторах равенства в Ruby: "Рубиновые основы - операторы равенства в Ruby"
Там вы можете увидеть различия между всеми операторами равенства, включая <=>, == и === (и последствия их реализации, включая реализацию метода хэша).
==
как Java's equals
, пока <=>
как compareTo
. ==
сравнивает два объекта и возвращает, являются ли они эквивалентными. a <=> b
сравнивает два объекта и возвращает 1, если a
больше, 0, если они одинаковы и -1
если b
больше.