我有一个包含以下代码的文件
我希望首先运行initialize方法,然后调用
class Lol < Redstone
def initialize
super 2013
end
call "/" do |headers|
"headers"
end
end
但是当我执行它时,首先调用方法调用。 如何解决这个问题?
答案 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
但是,根据您希望这种方式发挥作用的方式,这可能无法达到您想要的效果。