/ / Структура суперкласу класів та підкласів Ruby [дублікат] - ruby

Клас суперкласу та структура підкласу Ruby [дублікат] - рубій

Клас має модуль надкласового класу, який має об'єкт надкласового класу, який має базовий об'єкт надкласу, який є екземпляром класу. І Class знову підклас Модуль.

Я дуже збентежений щодо цього (вищевикладене було використано для використання методів .class та .superclass для кожного з вищезазначених об'єктів)

Хтось може мені пояснити, що саме тут відбувається?

Відповіді:

0 для відповіді № 1

Словосполучення "екземпляр" - це невелика, але значна частина розумової гімнастики, яку вам тут потрібно робити.

Те, і об'єкти типу Class, і клас під назвою Object.

Якщо ви можете зрозуміти це, принаймні, повільно повторюючи себе, тоді ви це зрозуміли:

  • Object.new створює екземпляр класу Об'єкт

  • Object є посиланням на клас Об'єкт, який сам є об'єктом класу Клас

  • Class є посиланням на клас Клас, який також є об’єктом класу Клас (!)

  • Class.new створює екземпляр класу Клас.

    • Це частина того, що відбувається під капотом, коли ви пишете class Foo
    • Насправді Foo = Class.new( String ) майже те саме, що і class Foo < String; end
  • Ієрархія класів Class, Module, Object є деталлю реалізації в Ruby. Майже всі класи успадковують від Object, тому це не є справжнім сюрпризом Class робить це теж.

Решта - це просто багаторазове використання та досвід.

Варто зауважити, що тут відбувається ще щось: Мітки в коді, який ви вводите, є символами / іменами змінних покажчики до основних об'єктів, які мають типи та містять дані. Немає необхідності використовувати ці мітки безпосередньо, вони майже однакові з будь-якою іншою змінною Ruby:

o_klass = Object
o_instance = o_klass.new
o_instance.class
=> Object