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