次のコードを含むファイルがあり
、initializeメソッドを最初に実行してから呼び出します
class Lol < Redstone
def initialize
super 2013
end
call "/" do |headers|
"headers"
end
end
しかし、これを実行すると、最初にメソッド呼び出しが呼び出されます。これを修正する方法は?
initialize
はこのクラスのインスタンスメソッドであるため、def initialize
はクラスのコンストラクターを設定するだけです。クラス定義が解析されるときにクラスのcall..
メソッドを呼び出しています。このコードは同等です call
class Lol < Redstone
def initialize
super 2013
end
end
Lol.call "/" do |headers|
"headers"
end
(呼び出しがパブリッククラスメソッドであると想定)
call
Rubyには、実際のクラス定義(メソッドなど)のコード以外に、クラスコンストラクターの概念はありません。あなたが何かをする必要があるならば、あなたはすることができます:
class Lol < Redstone
def self.init
#do class setup
end
init
def initialize
super 2013
end
call "/" do |headers|
"headers"
end
end
ただし、これを機能させたい方法によっては、希望どおりに機能しない場合があります。