В книге «Хорошо обоснованный рубист» ( отрывок ) Дэвид Блэк говорит о «Парадоксе класса / объекта курицы и яйца». Мне сложно понять всю концепцию.
Может ли кто-нибудь объяснить это лучше / проще / аналогично / другими словами?
Цитата (выделено мной):
Класс
Класс
является экземпляром самого себя; то есть это объектClass
. И еще кое-что. Помните классObject
? Что ж,Объект
- это класс ... но классы - это объекты. Итак,Объект
- это объект. АClass
- это класс. ИОбъект
- это класс, аКласс
- это объект.Что было первым? Как можно создать класс
Class
, если уже не существует classObject
? Но как может существовать классObject
(или любой другой класс), пока не будет классаClass
, экземпляры которого могут быть ?Лучший способ справиться с этим парадоксом, по крайней мере на данный момент, - это игнорировать его. Руби приходится делать что-то из этих куриных или яичных вещей, чтобы запустить и запустить систему классов и объектов - и тогда замкнутость и парадоксы не имеют значения. В процессе программирования вам просто нужно знать, что классы являются объектами, экземплярами класса, называемого
Class
.(Если вы хотите вкратце узнать, как это работает, то это примерно так: каждый объект имеет внутреннюю запись того, к какому классу он относится, и внутренняя запись внутри объекта
Класс
указывает наКласс
.)