【问题标题】:RuboCop complains when using 'Hash.new'RuboCop 在使用“Hash.new”时抱怨
【发布时间】:2018-01-23 22:46:34
【问题描述】:

当我使用 Hash.new 时,RuboCop 会抱怨,并建议我改用哈希文字。有没有办法让 RuboCop 忽略 Hash.new 的使用?更具体地说,我可以编辑我的.rubocop.yml 配置以允许使用Hash.new 而不会引起任何投诉吗?

【问题讨论】:

  • 为什么要使用Hash.new?
  • 我对 Ruby 还很陌生,但就我的理解而言,{} 和 Hash.new 都提供了相同的功能。如果有任何意义,我只是选择更美观的解决方案。

标签: ruby rubocop


【解决方案1】:

您可以在 rubocop.yml 文件中禁用Rubocop::Cop::Style::EmptyLiteral cop:

# .rubocop.yml
Style:
  EmptyLiteral: false

或者,如果您只想忽略某行:

hsh = Hash.new # rubocop:disable Style/EmptyLiteral

【讨论】:

    【解决方案2】:

    根据Ruby Style Guide,除非您需要将参数传递给它们的构造函数,否则首选文字数组和哈希创建表示法。因此,要遵循指南,您应该使用 hash = {} 而不是 hash = Hash.new

    我会遵循指南中的约定,但如果您不想要,您可以禁用 Style/EmptyLiteral cop,就像本地或全球任何其他警察一样。

    全球

    加你rubocop.yml文件:

    Style:
      EmptyLiteral: false
    

    本地

    # rubocop:disable Style/EmptyLiteral
    hash = Hash.new 
    # rubocop:enable Style/EmptyLiteral
    

    或单行的简短版本:

    hash = Hash.new # rubocop:disable Style/EmptyLiteral
    

    有关如何配置 Rubocop 的更多信息,请查看its documentation

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 2016-10-30
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-16
      相关资源
      最近更新 更多