开始了:
images = {:default=>["http://original-img", "http://original-img2"]}
img_src = ["http://localhost/image987.jpeg", "http://localhost/image988.jpeg"]
img_ids = [2046, 2047]
_images_src = images.clone
_images_src.each_value{|v| v.map!{img_src.shift}}
p _images_src # {:default=>["http://localhost/image987.jpeg", "http://localhost/image988.jpeg"]}
images.each_value{|v| v.map!{img_ids.shift}}
p images # {:default=>[2046, 2047]}
p _images_src # {:default=>[2046, 2047]}
Run Code Online (Sandbox Code Playgroud)
each_value如何调用图像,更改_images_src哈希?它们引用不同的对象和_images_src是CLONED图像并且仍在变化.
你做了一个"浅层克隆"但需要"深层克隆".搜索如何实现这一点以及权衡取舍.您可以通过运行以下内容来查看.请注意,对象ID是相同的.
[8] pry(main)> @images.values.first.object_id
=> 70308363136840
[9] pry(main)> _images_src.values.first.object_id
=> 70308363136840
Run Code Online (Sandbox Code Playgroud)