Ben böyle bir karma var. project
başka karma nesne olduğu için Yakut dup yinelemeli
Ben denemek
, İşted = h.dup # or d = h.clone
d['name'] = 'sayuj1'
d['project']['duration'] = 'xyz'
p d #=> {"name"=>"sayuj1", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
p h #=> {"name"=>"sayuj", "project"=>{"duration"=>"xyz", "project_name"=>"abc"}, "age"=>22}
sen project['duration']
görebilirsiniz orijinal karma değiştirilir.
Karma'nın yinelemeli olarak duped
veya cloned
olmasını istiyorum. Bunu nasıl başarabilirim? İşte
Bu, "h" ile başvurulan tüm nesnelerin tam kopyalarını oluşturur. Bu, basit String karmaları için Sayuj'un ihtiyaç duyduğu şey olabilir. Daha karmaşık nesneler ile, bu artık istenmeyebilir. Bir kez "hash # dup" yöntemini geçersiz kılmak için "hash'leri" yinelemeli olarak tüm hashları kopyalayabilirsiniz. Fakat bu her nesne tipi için uzatılmalıdır. –
@HolgerJust: Evet, bu yüzden "derin kopya" diye tabir ettim :-) –
Elbette. Sadece OP'den daha fazlasını yapabileceğinden bahsetmek istedim (her ne kadar muhtemelen iyi olsa da) :) Bu yüzden, sadece gelecekteki referanslar için. –