arr = ["red","green","yellow"]
arr2 = arr.clone
arr2[0].replace("blue")
puts arr.inspect
puts arr2.inspect
производит:Дублирование массив Рубин строк
["blue", "green", "yellow"]
["blue", "green", "yellow"]
Есть в любом случае сделать глубокую копию массива строк, за исключением использования Marshal, как я понимаю, что это хак.
я мог бы сделать:
arr2 = []
arr.each do |e|
arr2 << e.clone
end
но это, кажется, не очень элегантно, или эффективным.
Благодаря
вы можете сделать более короткий встроенный блок: arr.each {| e | arr2 << e.dup} – fl00r