Подтвердить что ты не робот

Что такое "главное" в Ruby?

Если я запустил этот файл как "ruby x.rb":

class X
end
x = X.new

В чем дело, вызывающее "X.new"?

Является ли это объектом/процессом/etc?

4b9b3361

Ответ 1

Все в Ruby происходит в контексте некоторого объекта. Объект на верхнем уровне называется "основным". Это в основном экземпляр объекта со специальным свойством, что любые методы, определенные там, добавляются как методы экземпляра объекта (поэтому они доступны повсюду).

Итак, мы можем сделать script, состоящий полностью из:

puts object_id
@a = 'Look, I have instance variables!'
puts @a

и он напечатает "105640" и "Посмотрите, у меня есть переменные экземпляра!".

Это не то, что вам обычно нужно заботиться, но оно есть.

Ответ 2

Вызывающий верхнего уровня является основным объектом, который имеет класс Object.

Попробуйте эту рубиновую программу:

p self
p self.class

Ответ 3

Это класс X. Вы вызываете метод "новый", который создает объект класса X. Итак, если вы запустите этот текст как script, Ruby:

  • создает новый класс X, который является подклассом Object, и который автоматически (как подкласс объекта) наследует некоторые методы, из которых new является одним.
  • устанавливает имя x
  • вызывает метод new для этого нового класса x, создавая объект экземпляра X; x получает ссылку на этот объект.

Ответ 4

Это интерпретатор ruby, выполняющий строку

x = X.new

Как и во многих языках сценариев, script интерпретируется сверху вниз, а не имеет стандартный метод точки входа, как большинство скомпилированных языков.

Ответ 5

Как сказал Чарли Мартин, X.new - это вызов конструктора класса X, который возвращает объект типа X, хранящийся в переменной x.

Основываясь на вашем названии, я думаю, что вы ищете немного больше. Ruby не нуждается в основном, он выполняет код в том порядке, в котором он его видит. Поэтому зависимости должны быть включены до их вызова.

Таким образом, ваш основной код - это код процедурного стиля, который написан за пределами определения класса или модуля.