Przyznaję, że jestem trochę rubinowym nowicjuszem (teraz piszę skrypty rake). W większości języków łatwo jest znaleźć konstruktory kopii. Pół godziny poszukiwań nie znalazło go w rubinie. Chcę utworzyć kopię skrótu, aby móc ją zmodyfikować bez wpływu na oryginalne wystąpienie.
Niektóre oczekiwane metody, które nie działają zgodnie z przeznaczeniem:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
W międzyczasie skorzystałem z tego nieeleganckiego obejścia
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
Hash
przedmiotami, podana odpowiedź jest dobra. Jeśli masz do czynienia z obiektami podobnymi do Hash, które pochodzą z miejsc, nad którymi nie kontrolujesz, powinieneś rozważyć, czy chcesz, aby klasa singletonowa była powiązana z Hash, czy nie. Zobacz stackoverflow.com/questions/10183370/…