2011-09-18 56 views
1

我想重複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 

我也試過在這些場景中使用賦值運算符和克隆方法。

回答

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 
+0

我認爲你的意思ARGV.each_with_index,而且還留有凍結我的元素。 但是.map的建議效果很好!謝謝你的幫助。還要感謝您向我展示each_with_index方法,這將非常方便! – scott