rubocop 进攻但不确定哪里出了问题

rubocop offense but not sure what is wrong

我正在清理我继承的一些代码,有这一行,但老实说,我不确定 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|

看起来像这样:

我只是想绕过这个警察。它告诉我要修复的内容有什么想法吗?

默认情况下,Rubocop 希望您将这两个变量命名为 accelem 而不是 totaltmp_val。你可以自己配置它想要的变量rubycop.yml。默认设置如下:

Style/SingleLineBlockParams:
  Methods:
    - reduce:
        - acc
        - elem
    - inject:
        - acc
        - elem

Rubocop 这个有点太死板了。 它应该只是检查第二个参数没有被称为 memacc 恕我直言。 只需使用 :

total_cost = tmp_totals.inject(0) { |acc, elem| acc + elem }

total_cost = tmp_totals.inject(0, :+)

Rubocop 不会抱怨,对于空数组,您将得到 0 而不是 nil。

如果您不确定 rubocop 抱怨什么,您可以:

  • 确保您的代码已提交

  • 使用rubocop -a script.rb

  • 检查代码是否仍然有效

  • 看看有什么区别