Вопрос

Каковы их различия? Исходя из фона Java, мне кажется, что <=> это то же самое, что Java's Equals (), а == для прямого справочного сравнения. Это правильно?

Это было полезно?

Решение

== только измерения, если два объекта равны, тогда как <=> Следует вернуть -1, если первый объект меньше, 0, если они равны, и 1, если первый объект больше.

Если вы определите <=> Метод для вашего класса, вы также получите все другие операторы сравнения (==, <, >, и так далее).

Другие советы

Не могу сказать, что я не пытаюсь продвигать себя, но я написал полноценное руководство о сравнении и операторах равенства в Ruby: "Рубиновые основы - операторы равенства в Ruby"

Там вы можете увидеть различия между всеми операторами равенства, включая <=>, == и === (и последствия их реализации, включая реализацию метода хэша).

== как Java's equals, пока <=> как compareTo. == сравнивает два объекта и возвращает, являются ли они эквивалентными. a <=> b сравнивает два объекта и возвращает 1, если a больше, 0, если они одинаковы и -1 если b больше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top