Ruby/Методика самопознания: различия между версиями

Содержимое удалено Содержимое добавлено
м {{BookCat}}; избыточные <big /> и <font /> вокруг <source />; ссылки; пробелы.
Строка 117:
{{info|Метод <tt>.instance_of?</tt> можно перевести на русский, как вопрос "является ли экземпляром класса?"}}
 
Обратите внимание, что число пять хоть и является целым, но метод <tt>.instance_of?</tt> не признает его экземляром класса <tt>Integer</tt>. В принципе он прав: число пять является экземпляром класса <tt>Fixnum</tt>, а не <tt>Integer</tt>. Это означает, что метод <tt>.instance_of?</tt> излишне строг.
 
И что же нам делать, если эта строгость нам ни к чему? Для этого можно воспользоваться методами <tt>.class</tt>, <tt>.ancestors<tt> и <tt>.include?</tt>, которые будут учитывать не только текущий класс, но и его родительские классы с примесями.
Строка 157:
Следуя той же логике, метод "больше" воспринимается как вопрос "является ли родителем?", то есть второй пример можно расценить как вопрос вида: "класс Object является ли родителем класса Integer?" Так как все классы унаследованы от класса <tt>Object</tt> (кроме самого <tt>Object</tt>), то утвердительный ответ (<tt>true</tt>) не должен нас сильно удивить.
 
Третий пример нам демонстрирует одну интересную особенность методов сравнения: если классы не состоят в отношениях "родитель-потомок", то они являются несравнимыми и поэтому метод сравнения отреагировал на эту ситуацию возвратом <tt>nil</tt>.
 
{{info|Напомним, что в логическом контексте объект <tt>nil</tt> равносилен объекту <tt>false</tt> (то есть они являются взаимозаменяемыми)}}
Строка 429:
 
=== Можно ли вызвать этот метод? ===
 
[[Категория:Ruby|Методика самопознания]]
{{BookCat}}