/ / Extraction de plusieurs valeurs d’un hachage en ruby, modification du hachage d’origine et restitution des valeurs extraites - ruby, hachage

Extraction de plusieurs valeurs d'un hachage en ruby, modification du hachage d'origine et retour des valeurs extraites - ruby, hash

J'ai un fichier YAML que j'utilise pour créer des modèles Ruby on Rails. Je charge cela en utilisant YAML.load(filename). Certaines des clés nécessitent un post-traitement avant de créer les modèles RoR, par exemple, les fichiers doivent être ouverts à partir de noms de fichiers.

Je veux extraire deux valeurs du hachage en variables, en laissant le hachage sans ces valeurs présentes.

Quelle est la manière la plus idiomatique de faire cela en Ruby?

Modifier:

J'ai essayé de faire:

value1 = hash.delete(:key1)
value2 = hash.delete(:key2)

ce qui me donne value1 et value2 bien mais laisse hasch inchangé.

Réponses:

1 pour la réponse № 1

Que diriez-vous d’utiliser un énumérateur et d’extraire chaque valeur du hachage en conservant le hachage dans son entité originale?

hash = { :key1 => value1, :key2 => value2 }

# Iterates over values
hash.each_value {|val| print val}

ou une autre alternative:

print hash.shift[1] while not hash.empty?

Normalement le delete method supprime la clé spécifiée de hash et renvoie la valeur supprimée.

hash.delete (:key1) # => returns the deleted value. Now the hash should contain {:key2=>value2}

0 pour la réponse № 2

Le hash généré par YAML.load utilise des clés de chaîne plutôt que des clés de symbole. J'essayais de supprimer en utilisant les touches de symbole afin que rien ne soit supprimé.