私はこれをやっているし、それが動作します:Proc.newではなく、to_procでinstance_evalを呼び出す際にエラーが発生するのはなぜですか?
class B
def value
"X"
end
end
class A
def initialize(context)
@context = context
end
def m
Proc.new do
value
end
end
def execute
@context.instance_eval(&m)
end
end
A.new(B.new).execute #=> "X"
しかしを呼び出すと、
class B
def value
"X"
end
end
class A
def initialize(context)
@context = context
end
def m
value
end
def execute
@context.instance_eval(&m.to_proc)
end
end
A.new(B.new).execute #=> NameError: undefined local variable or method `value' for #<A:0x007fae2ab02040 @context=#<B:0x007fae2ab02108>>
...働いていない私は、この2つの例が異なっており、それを作るためにどのように理由を知りたいですto_proc
申し訳ありませんが、私はブロックにPROCを変換するために「&」の前に 'm.to_proc'を逃し、まだ動作しません。 – Leantraxxx