小编Dir*_*ins的帖子

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

我正在分配一个像这样的数组常量:

NUMS = *(2..9)
Run Code Online (Sandbox Code Playgroud)

Rubocop说

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


所以我试试

NUMS = *(2..9).freeze
Run Code Online (Sandbox Code Playgroud)

Rubocop说

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


试着

NUMS = (*(2..9)).freeze
Run Code Online (Sandbox Code Playgroud)

Rubocop说

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


试着

NUMS = [1, 2, 3, 4, 5, 6, 7, 8, 9].freeze
Run Code Online (Sandbox Code Playgroud)

Rubocop说

== happy_robot_dance(没有错误)

我说

键入1,2,3,... 9,我的手会受伤

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

----------

解决方案

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

NUMS = Array(2..9).freeze
Run Code Online (Sandbox Code Playgroud)

ruby constants freeze splat rubocop

4
推荐指数
2
解决办法
1660
查看次数

标签 统计

constants ×1

freeze ×1

rubocop ×1

ruby ×1

splat ×1