加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby rubocop:如何冻结用splat生成的数组常量

发布时间:2020-12-17 02:56:35 所属栏目:百科 来源:网络整理
导读:我正在分配一个像这样的数组常量: NUMS = *(2..9) Rubocop说 C:冻结分配给constants.NUMS = *(2..9)^^^^^的可变对象 所以我试试 NUMS = *(2..9).freeze Rubocop说 C:冻结分配给constants.NUMS = *(2..9)的可变对象.freeze ^^^^^^^^^^^^ 试着 NUMS = (*(2.
我正在分配一个像这样的数组常量:

NUMS = *(2..9)

Rubocop说

C:冻结分配给constants.NUMS = *(2..9)^^^^^的可变对象

所以我试试

NUMS = *(2..9).freeze

Rubocop说

C:冻结分配给constants.NUMS = *(2..9)的可变对象.freeze ^^^^^^^^^^^^

试着

NUMS = (*(2..9)).freeze

Rubocop说

E:意外的令牌tRPAREN
(使用Ruby 2.0解析器;在AllCops下使用TargetRubyVersion参数进行配置)
NUMS =(*(2..9)).冻结^

试着

NUMS = [1,2,3,4,5,6,7,8,9].freeze

Rubocop说

== happy_robot_dance(没有错误)

我说

键入1,… 9,我的手会受伤

有没有办法使用splat分配和冻结常量?

———-

解决方案

NUMS = (2..9).to_a.freeze

NUMS = Array(2..9).freeze

解决方法

这个案子以前是由RuboCop解释的(阅读bug.)

我添加了一个issue和一个pull request来解决这个问题.

与此同时,您可以通过以下方式禁用警察,使用以下方法使警察沉默

# rubocop:disable Style/MutableConstant
NUMS = *(2..9)
# rubocop:enable Style/MutableConstant

或者您可以使用#to_a:

NUMS = (2..9).to_a.freeze

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读