main против инициализации в Ruby - PullRequest
2 голосов
/ 02 января 2011

Хорошо, я просмотрел пару своих рубиновых книг и занялся поиском, но безуспешно.

В чем разница между main и initialize в Ruby? Я видел код, который использует

class Blahblah  
  def main  
    # some logic here  
  end  
  # more methods...
end 

, а затем вызывает его с помощью Blahblah.new.

Новое не зарезервировано только для инициализировать? если нет, то в чем разница между ними?

Ответы [ 2 ]

6 голосов
/ 02 января 2011

Class#new вызывает alloc для класса, а затем initialize для созданного объекта. Не звонит main.

Имя метода main не имеет специального значения в стандартной библиотеке ruby. Поэтому, если вы не наследуете от класса, который определяет new или initialize таким образом, что будет вызываться main, main не будет вызываться автоматически каким-либо образом.

0 голосов
/ 02 января 2011

См. Класс Класс


Найдите класс Class в документации по Ruby.

Вы найдете общедоступный метод экземпляра с именем new.

Все классы являются экземплярами Class, поэтому у них всех есть метод класса self.new. Как это происходит, этот метод вызывает allocate для создания класса, а затем, если для нового класса определен метод экземпляра initialize, он вызывает его и пересылает свои аргументы (т.е. new).

Ничего особенного в main.

нет
...