我想在方法initialize
中使用一个块。使用此代码:
class Settlement
attr_reader :url, :parameters
def initialize(&block)
instance_eval block.call
end
def parameters(x) ; @parameters = x; end
def url(x) ; @url = x; end
end
settlement = Settlement.new do
url "https://xxxxx"
parameters("ffff")
end
我收到以下错误消息:
NoMethodError - 未定义的方法参数
有什么想法吗?
答案 0 :(得分:2)
当您致电instance_eval block.call
block.call
时,会在 instance_eval
被调用之前评估。这意味着在没有实例绑定的情况下调用块。
这应该有效:
def initialize(&block)
instance_eval &block
end