我知道这行得通:
proc = Proc.new do
puts self.hi + ' world'
end
class Usa
def hi
"Hello!"
end
end
Usa.new.instance_eval &proc
但是我想将参数传递给 proc,所以我尝试了这个不起作用:
proc = Proc.new do |greeting|
puts self.hi + greeting
end
class Usa
def hi
"Hello!"
end
end
Usa.new.instance_eval &proc, 'world' # does not work
Usa.new.instance_eval &proc('world') # does not work
谁能帮我让它工作?
最佳答案
使用instance_exec
而不是 instance_eval
当你需要传递参数时。
proc = Proc.new do |greeting|
puts self.hi + greeting
end
class Usa
def hi
"Hello, "
end
end
Usa.new.instance_exec 'world!', &proc # => "Hello, world!"
注意:它是 Ruby 1.8.7 的新功能,因此如果需要,请升级或要求'backports'
。
关于ruby - 使用带参数的 instance_eval 调用 proc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759210/