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