я могу думать об этом в неправильном направлении, но это выглядит немного странно для меня:рубина класс суперкласс ноль - OOP
я собирался через документацию на ruby's everything is an object on rubymonk и попал в часть о суперкласса, на следующем примере:
p Foo.superclass
p Foo.superclass.superclass
p Foo.superclass.superclass.superclass
Где Foo
это класс, и получил следующее:
STDOUT:
Object
BasicObject
nil
Я был смущен, почему последний был nil
, и я пошел вперед по проверке:
p Foo.superclass.superclass.superclass.superclass
, который был бы эквивалентом p nil.superclass
, и я получил следующее сообщение об ошибке:
undefined method `superclass' for nil:NilClass
И когда я попытался следующий, я получил более запутанной:
Почему я буду в состоянии назвать superclass
на Foo
и п ot on nil
, когда я могу назвать суперкласс по каждому из своих классов соответственно (Class
и NilClass
) - Foo
и nil
- оба экземпляра некоторых других class
, который имеет superclass
es.
Что особенного о nil
? что пропало между nil
и NilClass
, что NilClass
будет иметь superclass
, а nil
не будет?
'NilClass' _does_ имеют суперкласс, хотя –
Конечно, все классы, кроме одного, имеют суперкласса. Но вопрос был «что делает« nil »особенным», и ответ таков: «nil» не является особенным в отсутствии суперкласса, на самом деле почти у всех объектов нет суперкласса, только у классов есть суперклассы. –
Да. Тогда как это сочетается с последним предложением ответа? –