ruby - не может изменить замороженную строку (TypeError) - PullRequest
57 голосов
/ 05 февраля 2010

Получил

... '[] =': невозможно изменить замороженную строку (TypeError)

при попытке изменить то, что я считал копией ARGV [0].

Одинаковые результаты для каждого из

arg = ARGV[ 0 ]
arg_cloned = ARGV[ 0 ].clone
arg_to_s = ARGV[ 0 ].to_s

arg[ 'x' ] = 'y'
arg_cloned[ 'x' ] = 'y'
arg_to_s[ 'x' ] = 'y'

Ответы [ 2 ]

102 голосов
/ 05 февраля 2010

, так как Google слишком долго не мог найти правильный ответ ...

нужно сделать

arg_dup = ARGV[ 0 ].dup
5 голосов
/ 22 октября 2018

Поскольку в Ruby 2.3 рекомендуется использовать метод , использующий унарный оператор плюс , он вернет дублирующую изменяемую строку, если строка заморожена.

+arg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...