如何在Ruby中列出本地变量?

33
def method
  a = 3
  b = 4

  some_method_that_gives # [a, b] 
end
3个回答

48

local_variables

该函数输出代表变量的符号数组。在你的情况下为:[:a, :b]


真不敢相信我之前没找到它。谢谢! - Cheng
1
一些 Ruby 的版本输出的是字符串数组而不是符号数组。Ruby 2.0 和 1.9 使用符号,但 Ruby 1.8.7 使用字符串。 - inquiryqueue

7

local_variables列出了本地变量,但是它会在定义之前就列出它们。请看这个例子:

p local_variables
a = 1
p local_variables

这将输出:

这会输出


[:a]
[:a]

这可能不是您所期望的。与defined?相比较。

p defined? a
a = 1
p defined? a

输出更多期望的内容

nil
"local-variable"

1
如果你正在寻找带有它们的值的列表:
variables = self.local_variables.each_with_object({}) { |key, hash| hash[key] = eval(key.to_s) }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接