Разница между <=> и == в Ruby? - PullRequest
6 голосов
/ 25 июля 2011

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

Ответы [ 3 ]

14 голосов
/ 25 июля 2011

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

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

3 голосов
/ 25 июля 2011

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

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

2 голосов
/ 25 июля 2011

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

...