使用冻结元素复制数组

时间:2011-09-18 00:30:50

标签: ruby

我正在尝试复制ARGV数组以删除每个元素的冻结状态,但我所做的一切似乎都无效。

我可以在这个主题上找到的所有其他帖子都表明使用.dup应该可行,但事实并非如此。以下是我如何使用它:

args = ARGV.dup
puts args[0].frozen?
    => true

i = 0
argv.each {|x| 
           args[i] = x.dup
           i += 1 }
puts args[0].frozen?
     => true

我也尝试在这些场景中使用assign运算符和clone方法。

1 个答案:

答案 0 :(得分:0)

我尝试了以下内容:

args = ARGV.dup
p args[0].frozen? #=> true

args.each_with_index {|arg,i| args[i] = arg.dup }
p args[0].frozen? #=> false

基本上这应该足够了:

args = ARGV.map(&:dup)
p args[0].frozen? #=> false