Ruby-不能修改冻结的字符串(TypeError)

明白

... “[] =”: 不能修改冻结的字符串(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'
62281 次浏览

因为谷歌花了很长时间才找到正确答案。

需要做的事情

arg_dup = ARGV[ 0 ].dup

因为 Ruby 2.3推荐的方法是 使用一元加运算符,所以如果一个字符串被冻结,它将返回一个重复的可变字符串。

+arg