如何在Ruby中列出局部变量?

时间:2010-12-20 06:10:43

标签: ruby metaprogramming local-variables

def method
  a = 3
  b = 4

  some_method_that_gives # [a, b] 
end

3 个答案:

答案 0 :(得分:41)

  

local_variables

它输出符号数组,显示变量。在您的情况下:[:a, :b]

答案 1 :(得分:6)

local_variables列出了局部变量,但在定义之前列出了它们。见:

p local_variables
a = 1
p local_variables

此输出

[:a]
[:a]

这可能不是你所期望的。与defined?

对比
p defined? a
a = 1
p defined? a

输出更多预期的

nil
"local-variable"

答案 2 :(得分:0)

如果您正在寻找包含其值的列表:

variables = self.local_variables.each_with_object({}) { |key, hash| hash[key] = eval(key.to_s) }