【问题标题】:Ruby: call initialize method before others in class [closed]Ruby:在类中的其他人之前调用初始化方法[关闭]
【发布时间】:2013-01-17 19:30:28
【问题描述】:

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

class Lol < Redstone

    def initialize
        super 2013
    end

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

end

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

【问题讨论】:

  • 请解释你想要达到的目标
  • 将对call 的调用放在initialize 方法中。目前,在您声明类时,在创建任何实例之前,它会被调用。 (至少,我认为这就是你的目标。)
  • "我想让initialize方法先运行,再调用方法"

标签: ruby class methods


【解决方案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

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

【讨论】:

    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2014-05-29
    • 2013-03-08
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多