上下文探针
instance_eval
class MyClass
def initialize
@v =1
end
end
obj = MyClass.new
obj.instance_eval do
self #=> #<MyClass:xxxxxxxx @v=1>
@v # => 1
end
v=2
obj.instance_eval {@v = v}
obj.instance_eval {@v} # =>2
instance_exec
class C
def initialize
@x, @y = 1,2
end
end
C.new.instance_exec(3) {|arg| (@x + @y) * arg} => 9