4
它不等於主線程中的binding
,這個頂級範圍是什麼?此範圍與主線程中的binding
有什麼不同?什麼是ruby中的TOPLEVEL_BINDING?
> ruby -e 'puts TOPLEVEL_BINDING === binding'
false
它不等於主線程中的binding
,這個頂級範圍是什麼?此範圍與主線程中的binding
有什麼不同?什麼是ruby中的TOPLEVEL_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
# =>
#<Binding:0x9769ea0>
#<Binding:0x9769ea0>
#<Binding:0x9941ea8>
#<Binding:0x9941e58>
false