ruby中的TOPLEVEL_BINDING是什么?
它不等于主线程的binding
,这个顶层范围是什么? 这个范围与主线程的binding
有什么不同?
> ruby -e 'puts TOPLEVEL_BINDING === binding' false
事实是, TOPLEVEL_BINDING
始终引用预定义的Binding
全局实例,而Kernel#binding
创建一个新的Binding
实例,每次封装当前的执行上下文。 在顶层,它们都包含相同的绑定,但它们不是同一个对象,您无法使用==
或===
测试它们的绑定相等性。
puts TOPLEVEL_BINDING puts TOPLEVEL_BINDING puts binding puts binding puts binding == binding # => # # # # false