J'admets que je suis un peu un débutant rubis (écrit des scripts de râteau, maintenant). Dans la plupart des langues, les constructeurs de copie sont faciles à trouver. Une demi-heure de recherche ne l'a pas trouvée en rubis. Je souhaite créer une copie du hachage afin de pouvoir le modifier sans affecter l'instance d'origine.
Quelques méthodes attendues qui ne fonctionnent pas comme prévu:
h0 = { "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash
En attendant, j'ai eu recours à cette solution de contournement inélégante
def copyhash(inputhash)
h = Hash.new
inputhash.each do |pair|
h.store(pair[0], pair[1])
end
return h
end
Hash
objets simples , la réponse fournie est bonne. Si vous traitez avec des objets de type Hash provenant d'endroits que vous ne contrôlez pas, vous devez déterminer si vous souhaitez que la classe singleton associée au Hash soit dupliquée ou non. Voir stackoverflow.com/questions/10183370/…