在Ruby中命名嵌套变量

时间:2014-05-22 04:26:56

标签: ruby

我有几个嵌套块:

def method123
    my_items.map do |item| 
      item.map do |x|
        if x.is_a?(Array)
          x.map { |x2| ..... } 
        else
          x.to_s.upcase
        end
      end
    end
  end

正如您所看到的,我可能已经这样做了(命名所有变量" x")并且也可以正常工作:

def method123
    my_items.map do |x| 
      x.map do |x|
        if x.is_a?(Array)
          x.map { |x| ..... } 
        else
          x.to_s.upcase
        end
      end
    end
  end

这样做的正确方法是什么?这种情况的命名惯例是什么?

2 个答案:

答案 0 :(得分:2)

Ruby Style Guide推荐最佳实践,以便真实的Ruby程序员可以编写可由其他真实Ruby程序员维护的代码。

这是 ShadowingOuterLocalVariable 的情况,如果你运行RuboCop这是一个基于Ruby样式指南的Ruby静态代码分析器,它将作为警告给出。

这是首选首选的原因

答案 1 :(得分:1)

正如您已经注意到它在Ruby语言方面的正确用法。所以它工作正常。但通常你不应该这样做,至少如果你的变量没有相同的含义。通常,您不认为应该以调用对象的方式调用对象数组。我猜有一些例外,例如当您使用分层结构(如树)时,但这不是常见的例子。