Ich gebe zu, dass ich ein bisschen ein Rubin-Neuling bin (jetzt schreibe ich Rake-Skripte). In den meisten Sprachen sind Kopierkonstruktoren leicht zu finden. Eine halbe Stunde Suche fand es nicht in Rubin. Ich möchte eine Kopie des Hashs erstellen, damit ich ihn ändern kann, ohne die ursprüngliche Instanz zu beeinflussen.
Einige erwartete Methoden, die nicht wie beabsichtigt funktionieren:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
In der Zwischenzeit habe ich auf diese unelegante Problemumgehung zurückgegriffen
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
Hash
Objekten arbeiten, ist die Antwort gut. Wenn Sie mit Hash-ähnlichen Objekten arbeiten, die von Orten stammen, die Sie nicht kontrollieren, sollten Sie überlegen, ob die dem Hash zugeordnete Singleton-Klasse dupliziert werden soll oder nicht. Siehe stackoverflow.com/questions/10183370/…