【问题标题】:How to list local-variables in Ruby?如何在 Ruby 中列出局部变量?
【发布时间】:2011-05-28 02:29:30
【问题描述】:
def method
  a = 3
  b = 4

  some_method_that_gives # [a, b] 
end

【问题讨论】:

    标签: ruby metaprogramming local-variables


    【解决方案1】:

    local_variables

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

    【讨论】:

    • 不敢相信我以前没有找到它。谢谢!
    • 某些版本的 Ruby 输出字符串数组而不是符号数组。 Ruby 2.0 和 1.9 使用符号,但 Ruby 1.8.7 使用字符串。
    【解决方案2】:

    local_variables 列出局部变量,但它会在定义之前列出它们。看到这个:

    p local_variables
    a = 1
    p local_variables
    

    这个输出

    [:a]
    [:a]
    

    这可能不是您所期望的。对比defined?

    p defined? a
    a = 1
    p defined? a
    

    哪个输出更值得期待

    nil
    "local-variable"
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多