Глубокая копия массивов в Ruby

Я хотел получить объект в производство и сделать точную копию (скопировать его содержимое) на другой объект того же типа. Я пробовал сделать это тремя способами из консоли ruby, но ни один из них не работал:

  1. Допустим, у вас есть tt в качестве первого объекта, который вы хотите скопировать, и tt2 в качестве реплика объекта. Первый подход, который я попробовал, - это клонирование массива

     tt2.patients = tt.urls.patients.
    tt2.doctors = tt.segments.doctors
    tt2.hospitals = tt.pixels.hospitals
    
  2. Второй подход, который я пробовал, - это дублирование массива, которое фактически совпадает с клонированием массива:

     tt2.patients = tt.patients.dup
    tt2.doctors = tt.doctors.dup
    tt2.hospitals = tt.hospitals.dup
    
  3. Третий подход, который я пробовал, - это маршаллинг.

     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 ) обнуляется (пациенты, врачи и больницы исчезают). Есть ли у вас другие идеи по копированию содержимого одного объекта в другой? Спасибо.

14
задан mu is too short 22 December 2011 в 18:15
поделиться