renvoie un tableau [key, value]
, mais si je veux un hachage?Hash.each ne renvoie pas de hachage?
Exemple: {:key => value }
renvoie un tableau [key, value]
, mais si je veux un hachage?Hash.each ne renvoie pas de hachage?
Exemple: {:key => value }
Je suppose que vous vouliez dire « rendements » où vous dites « retour » parce que Hash#each
retourne déjà un hachage (le récepteur).
Pour répondre à votre question: Si vous avez besoin d'un hachage avec la clé et la valeur, vous pouvez en créer un. Comme ceci:
hash.each do |key, value|
kv_hash = {key => value}
do_something_with(kv_hash)
end
Il n'y a pas de méthode alternative qui donne each
hashs, de sorte que ce qui précède est le meilleur que vous pouvez faire.
Appel .each
avec deux paramètres:
>> a = {1 => 2, 3 => 4}
>> a.each { |b, c|
?> puts "#{b} => #{c}"
>> }
1 => 2
3 => 4
=> {1=>2, 3=>4}
Vous pouvez map
le hachage à une liste de hash à un seul élément, puis appelez each
sur la liste:
h = {:a => 'a', :b => 'b'}
h.map{ |k,v| {k => v}}.each{ |x| puts x }
Je pense que vous essayez pour transformer le hash en quelque sorte, alors je vais vous donner ma solution à ce problème, qui peut ne pas être exactement le même. Pour modifier un hachage, vous devez les .map
et construire un nouveau hachage.
Voici comment j'inverse et valeurs clés:
h = {:a => 'a', :b => 'b'}
Hash[h.map{ |k,v| [v, k] }]
# => {"a"=>:a, "b"=>:b}