作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
它不等于主线程的binding
,这个toplevel作用域是什么?此作用域与主线程中的 binding
有何不同?
> ruby -e 'puts TOPLEVEL_BINDING === binding'
false
最佳答案
事实是,TOPLEVEL_BINDING
始终引用 Binding
的预定义全局实例,而 Kernel#binding
创建 的新实例>Binding
每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用 ==
或 ===
测试它们的绑定(bind)相等性。
puts TOPLEVEL_BINDING
puts TOPLEVEL_BINDING
puts binding
puts binding
puts binding == binding
# =>
#<Binding:0x9769ea0>
#<Binding:0x9769ea0>
#<Binding:0x9941ea8>
#<Binding:0x9941e58>
false
关于ruby - ruby 中的 TOPLEVEL_BINDING 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170027/
我知道 TOPLEVEL_BINDING 是 main 的绑定(bind)对象。以下代码证实了这一点: def name :outer end module Test class Binder
如果我输入以下代码: a = 42 p TOPLEVEL_BINDING.local_variable_defined?(:a) 在文件“rubyScratch.rb”中使用 ruby ru
它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的 binding 有何不同? > ruby -e 'puts TOPLEVEL_BINDING === bindi
我是一名优秀的程序员,十分优秀!