Шрифт:
Иногда нужно знать, является ли данный класс непосредственным родителем объекта или класса. Ответ на этот вопрос дает метод
У любого класса, кроме
11.1.7. Проверка объектов на равенство
Все животные равны, но некоторые равнее других.
Джордж Оруэлл, «Скотный двор»При написании своих классов желательно, чтобы семантика типичных операций была такой же, как у встроенных в Ruby классов. Например, если объекты класса можно упорядочивать, то имеет смысл реализовать метод
Однако картина перестает быть такой однозначной, когда дело доходит до проверки объектов на равенство. В Ruby объекты реализуют пять разных методов для этой операции. И в ваших классах придется реализовать хотя бы некоторые из них, поэтому рассмотрим этот вопрос подробнее.
Самым главным является метод
Самым распространенным способом проверки на равенство является старый добрый оператор
Следующим в шкале абстракции стоит метод
Метод
Любой объект реализует еще два метода сравнения. Метод
Эта конструкция работает, потому что в классе
Наконец, в Ruby реализован оператор сопоставления с образцом
У операторов