11 Kasım 2010, PERŞEMBE
Nasıl Ruby bir karma kopyalayabilirim?
Ruby bir acemi biraz (komisyon komut, şimdi yazma) olduğumu kabul ediyorum. Çoğu dilde, kopya yapıcılar bulmak kolay. Aradıktan yarım saat sonra ruby bulamadı. Orijinal örneğini etkilemeden, değiştirmeden, çok karma bir kopyasını oluşturmak istiyorum.
Beklendiği gibi işe yaramazsa beklenen bazı yöntemler:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
Bu arada, bu çok kaba bir çözüm için müracaat ettim
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
CEVAP
11 Kasım 2010, PERŞEMBE
Diğerleri belirttiği gibi, clone
yapacak. Karma clone
yüzeysel bir kopyasını oluşturur unutmayın. Şöyle ki:
h1 = {:a => 'foo'}
h2 = h1.clone
h1[:a] << 'bar'
p h2 # => {:a=>"foobar"}
Ne karma başvuruları kopyalanan, ama nesneleri başvurular bakın.
Eğer derin bir kopyasını istiyorsanız:
def deep_copy(o)
Marshal.load(Marshal.dump(o))
end
h1 = {:a => 'foo'}
h2 = deep_copy(h1)
h1[:a] << 'bar'
p h2 # => {:a=>"foo"}
deep_copy
sıraya herhangi bir nesne için çalışıyor. En dahili veri türleri (Dizi, Hash, String, &c.) sıraya olabilir.
Bunu Paylaş:
Nasıl Karma bir anahtarı kaldırın ve R...
Nasıl ruby karma bir nesneyi JSON dönü...
Nasıl HTTP Parametreler içine Ruby bir...
Nasıl ruby SHA1 karma oluşturabilirim?...
Nasıl ruby hash değerleri ile karma bi...