我正在分配一个像这样的数组常量:
NUMS = *(2..9)
Rubocop说
C:冻结分配给常量的可变对象。
NUMS = *(2..9)
^^^^^
所以我试试
NUMS = *(2..9).freeze
Rubocop说
C:冻结分配给常量的可变对象。
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,2,3,... 9而受伤。
有没有办法使用splat分配和冻结常量?
解决方案
NUMS = (2..9).to_a.freeze
NUMS = Array(2..9).freeze
答案 0 :(得分:5)
此案件以前由RuboCop下载不明(读错误。)
我添加了issue和pull request来解决此问题。
与此同时,你可以通过以下方式禁用警察,使用以下方法使警察沉默:
# rubocop:disable Style/MutableConstant
NUMS = *(2..9)
# rubocop:enable Style/MutableConstant
或者您可以使用#to_a
:
NUMS = (2..9).to_a.freeze
答案 1 :(得分:0)
我认为这是一个为了自己的缘故安抚Rubocop的情况 - 案例2看起来应该有效,因此可能被认为是一个错误。但是,这有用吗?
loadScript("//www.google-analytics.com/analytics.js", SetInlineManualCallbacks);
答案 2 :(得分:0)
您可以尝试:
NUMS = Array[*2..9].freeze