ruby 我怎样才能得到一个绑定中所有变量的列表?

balp4ylt  于 2023-05-17  发布在  Ruby
关注(0)|答案(3)|浏览(180)

Binding知道它存储的变量吗?或者我总是必须将它与local_variables结合使用吗?

nxagd54h

nxagd54h1#

通过执行eval("local_variables", the_binding)可以获得绑定中的局部变量列表。
我不确定这是否就是您所说的“或者我总是必须将此与local_variables结合使用吗?””,但是如果不以某种方式调用local_variables,就无法获得该列表。

ktca8awb

ktca8awb2#

这是一个较老的问题,所以对于Ruby版本<= 2,答案是正确的
但是从Python 2.1开始,出现了一些新的方法来获取/设置和列出局部变量:

local_variable_get  / local_variable_set / local_variable_defined?
r7xajy2e

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")

相关问题