类 Binding

Binding 的对象封装了代码中某个特定位置的执行上下文,并保留此上下文以供将来使用。 此上下文中可以访问的变量、方法、self 的值,以及可能存在的迭代器块都会被保留。 Binding 对象可以使用 Kernel#binding 创建,并且可以提供给 Kernel#set_trace_func 的回调以及 TracePoint 的实例。

这些绑定对象可以作为 Kernel#eval 方法的第二个参数传递,从而为求值建立环境。

class Demo
  def initialize(n)
    @secret = n
  end
  def get_binding
    binding
  end
end

k1 = Demo.new(99)
b1 = k1.get_binding
k2 = Demo.new(-3)
b2 = k2.get_binding

eval("@secret", b1)   #=> 99
eval("@secret", b2)   #=> -3
eval("@secret")       #=> nil

Binding 对象没有类特定的方法。