ruby - 无法修改冻结的字符串(TypeError)

时间:2010-02-05 03:56:00

标签: ruby

得到了

  

...'[] =':无法修改冻结的字符串(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 个答案:

答案 0 :(得分:101)

因为谷歌花了太长时间才找到正确的答案......

需要做

arg_dup = ARGV[ 0 ].dup

答案 1 :(得分:5)

由于Ruby 2.3推荐的方法是use the unary plus operator,因此如果冻结了字符串,它将返回重复的可变字符串。

+arg