Что такое TOPLEVEL_BINDING в рубине?

Это нет равенbinding в главном потоке, что это за уровень верхнего уровня? Чем эта сфера отличается отbinding в основной теме?

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

Ответы на вопрос(1)

Решение Вопроса

Дело в том,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
</binding:0x9941e58></binding:0x9941ea8></binding:0x9769ea0></binding:0x9769ea0>

Ваш ответ на вопрос