Мне кажется странным создавать объект, вызывая «новое», но в определении класса инициализатор называется «инициализировать». Я попытался привести его в соответствие (будет называться «новый» в обоих определения класса и снаружи), поэтому я попытался код ниже, используя alias_method:Как я могу инициализировать метод в Ruby?
class Class
alias_method :initialize :new
end
class Foo
def new
puts "bar"
end
end
f = Foo.new
я думал, когда я псевдоним new
как initialize
, он будет вызывать initialize
, и initialize
- это псевдоним new
, поэтому он назовет new
. Но это не работает, и дают ошибки:
SyntaxError: test.rb:2: syntax error, unexpected ':'
alias_method :initialize :new
^
Видимо new
является ключевым словом и не может быть совмещенным. Но все вокруг?
Обновление:
К сожалению, я пропустил запятую в alias_method
После добавления запятой, скрипт запускается без ошибок. Но он не выводит «бар», поэтому новый метод не вызывается. Я не уверен, почему это не будет работать как комментарии ниже ...
Обратите внимание, что вы должны использовать 'alias_method: initialize,: new' (отметить запятую); однако, я думаю, это просто невозможно. – maerics