我有几个嵌套块:
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
这样做的正确方法是什么?这种情况的命名惯例是什么?
答案 0 :(得分:2)
Ruby Style Guide推荐最佳实践,以便真实的Ruby程序员可以编写可由其他真实Ruby程序员维护的代码。
这是 ShadowingOuterLocalVariable 的情况,如果你运行RuboCop这是一个基于Ruby样式指南的Ruby静态代码分析器,它将作为警告给出。
这是首选首选的原因
答案 1 :(得分:1)
正如您已经注意到它在Ruby语言方面的正确用法。所以它工作正常。但通常你不应该这样做,至少如果你的变量没有相同的含义。通常,您不认为应该以调用对象的方式调用对象数组。我猜有一些例外,例如当您使用分层结构(如树)时,但这不是常见的例子。