明確にするために-このコードは完全に実行されています-procを使用したコード
しかし、代わりに Proc.new をラムダに変更すると、エラーが発生します
ArgumentError: wrong number of arguments (1 for 0)
これは、instance_eval が自分自身をパラメーターとして渡したいのに、ラムダがメソッドとして扱い、未知のパラメーターを受け入れないためでしょうか?
2 つの例があります - 最初は動作しています:
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
2 番目は:
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
ありがとう