0
我這樣做的,它的工作原理:爲什麼我會用to_proc而不是用Proc.new調用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>>
我想知道爲什麼這兩個例子是不同的,如何使它與to_proc
對不起,我錯過了「&」前'm.to_proc'到PROC轉換成塊,並仍然沒有工作。 – Leantraxxx