2013-06-18 25 views

回答

7

事实是,TOPLEVEL_BINDING总是指Binding预定义的全局实例,而Kernel#binding创建一个封装当前执行上下文每一次的Binding一个新的实例。在顶层,它们都包含相同的绑定,但它们不是同一个对象,您不能使用=====来测试它们的绑定相等性。

puts TOPLEVEL_BINDING 
puts TOPLEVEL_BINDING 
puts binding 
puts binding 
puts binding == binding 

# => 
#<Binding:0x9769ea0> 
#<Binding:0x9769ea0> 
#<Binding:0x9941ea8> 
#<Binding:0x9941e58> 
false