-5

次のコードを含むファイルがあり
、initializeメソッドを最初に実行してから呼び出します

class Lol < Redstone

    def initialize
        super 2013
    end

    call "/" do |headers|
        "headers"
    end

end

しかし、これを実行すると、最初にメソッド呼び出しが呼び出されます。これを修正する方法は?

4

1 に答える 1

1

initializeはこのクラスのインスタンスメソッドであるため、def initializeはクラスのコンストラクターを設定するだけです。クラス定義が解析されるときにクラスのcall..メソッドを呼び出しています。このコードは同等です call

class Lol < Redstone
  def initialize
    super 2013
  end
end

Lol.call "/" do |headers|
  "headers"
end

(呼び出しがパブリッククラスメソッドであると想定)

callRubyには、実際のクラス定義(メソッドなど)のコード以外に、クラスコンストラクターの概念はありません。あなたが何かをする必要があるならば、あなたはすることができます:

class Lol < Redstone
  def self.init
    #do class setup
  end
  init
  def initialize
    super 2013
  end

  call "/" do |headers|
    "headers"
  end
end

ただし、これを機能させたい方法によっては、希望どおりに機能しない場合があります。

于 2013-01-17T19:36:10.400 に答える