Я назначаю константу массива следующим образом:
NUMS = *(2..9)
Рубокоп говорит
C: заморозить изменяемые объекты, назначенные константам.
NUMS = *(2..9)
^^^^^
Поэтому я пытаюсь
NUMS = *(2..9).freeze
Рубокоп говорит
C: заморозить изменяемые объекты, назначенные константам.
NUMS = *(2..9).freeze
^^^^^^^^^^^^^
Пытался
NUMS = (*(2..9)).freeze
Рубокоп говорит
E: неожиданный токен tRPAREN (с использованием синтаксического анализатора Ruby 2.0; настроить с помощью параметра TargetRubyVersion в разделе AllCops)
NUMS = (*(2..9)).freeze
^
Пытался
NUMS = [1, 2, 3, 4, 5, 6, 7, 8, 9].freeze
Рубокоп говорит
== happy_robot_dance (без ошибок)
Я говорю
У меня болит рука от набора 1, 2, 3, ... 9
Есть ли способ использовать знак для назначения и замораживания константы?
----------
Решения
NUMS = (2..9).to_a.freeze
NUMS = Array(2..9).freeze
(2..9).to_a
должно совпадать с[2,3,4, ...etc]
. Интересно, вызывает ли проблема тот факт, что2..9
являетсяRange
. В любом случае, если исходный код работает, предупреждение Rubocop выглядит необоснованным. - person max pleaner   schedule 04.08.2016#to_a
доступен и намного понятнее. В то же время у этого копа не должно быть мнения по этому поводу. - person Drenmi   schedule 04.08.2016