"new"を呼び出すことによってオブジェクトを作成するのは変ですが、クラス定義では初期化子を "initialize"と呼びます。私はそれが一貫作ってみました(クラス定義と外側の両方に「新」と呼ばれることにする)ので、私はalias_methodを使用して、以下のコードを試してみました:Rubyでエイリアスを初期化する方法は?
class Class
alias_method :initialize :new
end
class Foo
def new
puts "bar"
end
end
f = Foo.new
私はinitialize
としてnew
を別名とき、それはinitialize
を呼び出しますと思いました、 initialize
はnew
のエイリアスですので、new
を呼び出します。しかし、働いて、エラーを与えていない:
SyntaxError: test.rb:2: syntax error, unexpected ':'
alias_method :initialize :new
^
どうやらnew
がキーワードであるとエイリアスすることはできません。しかし、周りどのような方法ですか?
アップデート:私はカンマを追加した後alias_method
にカンマを逃した申し訳
、スクリプトがエラーなしで実行されます。しかし、 "bar"は出力されないので、新しいメソッドは呼び出されません。これがなぜ以下のコメントとして機能しないのかわかりません。
'alias_method:initialize、:new'(カンマに注意してください)を使用する必要があることに注意してください。しかし、私はこれが単にできないと思う。 – maerics