【发布时间】:2012-01-26 07:54:13
【问题描述】:
我想在生产中获取一个对象,并对另一个相同类型的对象进行精确的复制(复制其内容)。我尝试从 ruby 控制台以 3 种方式执行此操作,但均无效:
-
假设您将
tt作为要复制的第一个对象,将tt2作为副本对象。我尝试的第一种方法是克隆数组tt2.patients = tt.urls.patients tt2.doctors = tt.segments.doctors tt2.hospitals = tt.pixels.hospitals -
我尝试的第二种方法是复制数组,实际上与克隆数组相同:
tt2.patients = tt.patients.dup tt2.doctors = tt.doctors.dup tt2.hospitals = tt.hospitals.dup -
我尝试的第三种方法是编组。
tt2.patients = Marshal.load(Marshal.dump(tt.patients)) tt2.doctors = Marshal.load(Marshal.dump(tt.doctors)) tt2.hospitals = Marshal.load(Marshal.dump(tt.hospitals))
以上都不适用于从一个数组到另一个数组的深度复制。在分别尝试了上述每种方法后,第一个对象 (tt) 的所有内容都无效(患者、医生和医院都消失了)。您对将一个对象的内容复制到另一个对象有任何其他想法吗?谢谢。
【问题讨论】:
-
您只是在第一个示例中设置变量。试试 tt2.patients = tt.patiens.clone。
标签: ruby-on-rails ruby arrays copy clone