Ruby:在类中的其他人之前调用initialize方法

时间:2013-01-17 19:30:28

标签: ruby class methods

我有一个包含以下代码的文件
我希望首先运行initialize方法,然后调用

class Lol < Redstone

    def initialize
        super 2013
    end

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

end

但是当我执行它时,首先调用方法调用。 如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

但是,根据您希望这种方式发挥作用的方式,这可能无法达到您想要的效果。