Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中的克隆哈希上使用gsub修改原始哈希_Ruby_Clone - Fatal编程技术网

在Ruby中的克隆哈希上使用gsub修改原始哈希

在Ruby中的克隆哈希上使用gsub修改原始哈希,ruby,clone,Ruby,Clone,我面临一个问题,在这个问题中,我无法在不影响原始字符串的情况下替换克隆哈希中的字符串。我最好用一个例子来解释: product_attributes = raw_attributes.clone # do some stuff on product_attributes like removing hash elements using "select!" puts product_attributes[:code] # => 64020-001 puts raw_attributes

我面临一个问题,在这个问题中,我无法在不影响原始字符串的情况下替换克隆哈希中的字符串。我最好用一个例子来解释:

product_attributes = raw_attributes.clone

# do some stuff on product_attributes like removing hash elements using "select!"

puts product_attributes[:code]
# => 64020-001
puts raw_attributes[:code]
# => 64020-001

product_attributes[:code].gsub!(/[\/|\-][0-9\.]*$/, "")

puts product_attributes[:code]
# => 64020
puts raw_attributes[:code]
# => 64020
我在OSX上使用Ruby 1.9.3p327


这是一个已知的问题(甚至是一个特性)?还是我做错了什么?

clone
只对数组进行了一个浅拷贝,因此元素被复制而不是自己克隆。有关如何高效执行深度复制的详细讨论,请参阅

如果只需要深度克隆此值:

product_attributes = raw_attributes.clone
product_attributes[:code] = product_attributes[:code].clone

可能是重复的哦,这是有道理的。非常感谢。我做了一个很有戏剧性的标题:)我最好去读一本书。