1. ホーム
  2. ruby

[解決済み] Hashの値を変更するには?

2022-06-10 23:49:52

質問

それぞれの valuevalue.some_method .

例えば、単純なハッシュが与えられた場合。

{"a" => "b", "c" => "d"}` 

すべての値は .upcase dのような形になるので

{"a" => "B", "c" => "D"}

試しに #collect#map を実行しても、常に配列が返されるだけです。これを行うためのエレガントな方法はありますか?

アップデイト

しまった、忘れていた。ハッシュはインスタンス変数にあり、それは変更されるべきではない。変更された値で新しいハッシュが必要ですが、その変数を明示的に定義して、それを埋めるハッシュをループさせることは避けたいと考えています。何かそのようなもの。

new_hash = hash.magic{ ... }

どのように解決するのですか?

my_hash.each { |k, v| my_hash[k] = v.upcase } 

または、非破壊で行い、新しいハッシュを返すことを望むなら、修正する代わりに my_hash :

a_new_hash = my_hash.inject({}) { |h, (k, v)| h[k] = v.upcase; h } 

この最後のバージョンは、キーも変形させることができるという付加的な利点があります。