6

メイン スレッドとはbinding異なります。このトップレベル スコープとは何ですか? bindingこのスコープはメイン スレッドと何が違うのですか?

> ruby -e 'puts TOPLEVEL_BINDING === binding'
false
4

1 に答える 1

10

実際には、TOPLEVEL_BINDING常に定義済みの のグローバル インスタンスを参照し、毎回、現在の実行コンテキストをカプセル化するの新しいインスタンスBindingを作成します。最上位では、両方に同じバインディングが含まれていますが、同じオブジェクトではないため、またはでバインディングの同等性をテストすることはできません。Kernel#bindingBinding=====

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

# =>
#<Binding:0x9769ea0>
#<Binding:0x9769ea0>
#<Binding:0x9941ea8>
#<Binding:0x9941e58>
false
于 2013-06-18T13:53:52.727 に答える