Tôi muốn nhận được một đối tượng về sản xuất và thực hiện một bản sao chính xác (sao chép nội dung của nó) sang đối tượng khác cùng loại. Tôi đã cố gắng làm điều này trong 3 cách từ ruby console mà không ai trong số họ làm việc:Bản sao sâu của mảng trong Ruby
Hãy nói rằng bạn có
tt
là đối tượng đầu tiên mà bạn muốn sao chép vàtt2
như các đối tượng bản sao. Cách tiếp cận đầu tiên tôi đã cố gắng được nhân bản mảngtt2.patients = tt.urls.patients tt2.doctors = tt.segments.doctors tt2.hospitals = tt.pixels.hospitals
cách tiếp cận thứ hai tôi đã cố gắng được nhân đôi mảng mà thực sự là giống như nhân bản mảng:
tt2.patients = tt.patients.dup tt2.doctors = tt.doctors.dup tt2.hospitals = tt.hospitals.dup
cách tiếp cận thứ ba tôi đã cố gắng được marhsalling.
tt2.patients = Marshal.load(Marshal.dump(tt.patients)) tt2.doctors = Marshal.load(Marshal.dump(tt.doctors)) tt2.hospitals = Marshal.load(Marshal.dump(tt.hospitals))
Không ai trong số các công trình trên để sao chép sâu từ một mảng khác. Sau khi thử từng cách tiếp cận riêng lẻ ở trên, tất cả các nội dung của đối tượng đầu tiên (tt
) đều bị vô hiệu hóa (bệnh nhân, bác sĩ và bệnh viện đã biến mất). Bạn có ý tưởng nào khác về việc sao chép nội dung của một đối tượng này sang đối tượng khác không? Cảm ơn.
Bạn chỉ đang đặt biến của mình trong ví dụ đầu tiên. Hãy thử tt2.patients = tt.patiens.clone để thay thế. – three