我正在清理一些我继承过的代码并且有这条线但是说实话,我不确定rubocop试图告诉我它的错误。
total_cost = tmp_totals.inject { |total, tmp_val| total + tmp_val }
我收到此错误
app/models/item_count.rb:58:40: C: Name inject block params |acc, elem|
看起来像这样:
我只是想通过这个警察。它有什么想法让我解决这个问题?
答案 0 :(得分:5)
默认情况下,Rubocop希望您将这两个变量命名为acc
和elem
,而不是total
和tmp_val
。您可以在自己的rubycop.yml中配置它想要的变量。默认设置如下:
Style/SingleLineBlockParams:
Methods:
- reduce:
- acc
- elem
- inject:
- acc
- elem
答案 1 :(得分:1)
Rubocop对这个有点过于僵硬。
它应该检查第二个参数是否被称为mem
或acc
恕我直言。
只需使用:
total_cost = tmp_totals.inject(0) { |acc, elem| acc + elem }
或
total_cost = tmp_totals.inject(0, :+)
Rubocop不会抱怨,你会得到0代替零而不是空阵列。
如果你不确定rubocop抱怨什么,你可以:
确保您的代码已提交
使用rubocop -a script.rb
检查代码是否仍然有效
检查区别是什么