Как называется функция, позволяющая ruby выполнять код внутри классов при интерпретации файла - PullRequest
0 голосов
/ 30 марта 2020

Когда у меня есть следующий ruby код

#file a.rb
class A
   puts '2'
end

, если я выполняю rb a.rb, я выводю 2 на экран. Это из-за того, как ruby интерпретирует код, но как называется это поведение?

1 Ответ

2 голосов
/ 30 марта 2020

Причина, по которой он печатает что-то, заключается в том, что в процессе определения класса A вы спрашивали это. Все, что находится внутри блока class, рассматривается как обычный код Ruby, оно не является специальным, поэтому печать, выход, создание сетевых подключений, открытие файлов - все работает, как и везде.

Это резко контрастирует с такими вещами, как JavaScript и C ++, где это абсолютно недопустимо.

Ruby, будучи динамическим c языком программирования, имеет гораздо больше возможностей. Это допускает такие вещи, как определение методов, основанных на вводе данных из файлов, или почти все, что вы можете себе представить.

Название этого поведения в основном является "оценочным", например, когда Ruby оценивает этот код, то есть он анализирует и запускает его.

Это позволяет вам делать вещи в Ruby, что невозможно на других языках, без использования макросов, приемов препроцессора или других методов:

class A
  if (Date.today.saturday? or Date.today.sunday?)
    def party!
      :on
    end
  end
end

Где это будет определять метод party! только когда код запускается в выходные дни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...