-5

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

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

(假设 call 是一个公共类方法)

call除了实际类定义中的代码(如方法)之外,Ruby 并没有真正的类构造函数的概念。如果你需要做某事,你可以这样做:

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 回答