需要明确的是 - 此代码运行完美 -带有 proc 的代码
但是,如果我将 Proc.new 更改为 lambda,则会出现错误
ArgumentError: wrong number of arguments (1 for 0)
可能是因为 instance_eval 想将 self 作为参数传递,而 lambda 将其视为方法而不接受未知参数?
有两个例子 - 第一个是工作:
class Rule
def get_rule
Proc.new { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
第二个不是:
class Rule
def get_rule
lambda { puts name }
end
end
class Person
attr_accessor :name
def init_rule
@name = "ruby"
instance_eval(&Rule.new.get_rule)
end
end
谢谢