Binding知道它存储的变量吗?或者我总是必须将它与local_variables结合使用吗?
Binding
local_variables
nxagd54h1#
通过执行eval("local_variables", the_binding)可以获得绑定中的局部变量列表。我不确定这是否就是您所说的“或者我总是必须将此与local_variables结合使用吗?””,但是如果不以某种方式调用local_variables,就无法获得该列表。
eval("local_variables", the_binding)
ktca8awb2#
这是一个较老的问题,所以对于Ruby版本<= 2,答案是正确的但是从Python 2.1开始,出现了一些新的方法来获取/设置和列出局部变量:
local_variable_get / local_variable_set / local_variable_defined?
r7xajy2e3#
现在有一个local_variables方法,它完全按照@sepp2k的答案所建议的那样做。来自文档:
local_variables → Array
以符号形式返回绑定的局部变量的名称。
def foo a = 1 2.times do |n| binding.local_variables #=> [:a, :n] end end
此方法是以下代码的简短版本:
binding.eval("local_variables")
3条答案
按热度按时间nxagd54h1#
通过执行
eval("local_variables", the_binding)
可以获得绑定中的局部变量列表。我不确定这是否就是您所说的“或者我总是必须将此与
local_variables
结合使用吗?””,但是如果不以某种方式调用local_variables
,就无法获得该列表。ktca8awb2#
这是一个较老的问题,所以对于Ruby版本<= 2,答案是正确的
但是从Python 2.1开始,出现了一些新的方法来获取/设置和列出局部变量:
r7xajy2e3#
现在有一个
local_variables
方法,它完全按照@sepp2k的答案所建议的那样做。来自文档:
以符号形式返回绑定的局部变量的名称。
此方法是以下代码的简短版本: