Comment puis-je copier une table de hachage en Ruby?

Je vais vous avouer que je suis un peu d'un rubis débutant (écrit râteau scripts, maintenant). Dans la plupart des langues, de copier les constructeurs sont faciles à trouver. Une demi-heure de recherche ne la trouverez pas en ruby. Je veux créer une copie de la table de hachage afin que je puisse le modifier sans affecter l'instance d'origine.

Certains attendent des méthodes qui ne fonctionnent pas comme prévu:

h0 = {  "John"=>"Adams","Thomas"=>"Jefferson","Johny"=>"Appleseed"}
h1=Hash.new(h0)
h2=h1.to_hash

Dans l'intervalle, j'ai eu recours à cette solution peu élégante

def copyhash(inputhash)
  h = Hash.new
  inputhash.each do |pair|
    h.store(pair[0], pair[1])
  end
  return h
end
  • Si vous êtes aux prises avec la plaine Hash objets, la réponse est bonne. Si vous êtes aux prises avec de Hachage comme des objets qui viennent d'endroits que vous n'avez pas de contrôle que vous devriez considérer si vous voulez le singleton classe associée à la valeur de Hachage dupliqué ou pas. Voir stackoverflow.com/questions/10183370/...
InformationsquelleAutor Precipitous | 2010-11-11