instance_eval(上下文探针)

上下文探针

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

 

posted on 2014-04-24 18:18  qinyan20  阅读(219)  评论(0编辑  收藏  举报