1. ホーム
  2. ruby

[解決済み] Ruby - 配列をハッシュマップにマッピングする

2023-08-05 07:02:37

質問

配列と、ある値を与えるとその値を返す関数があります。最終的に私は、キー値として配列の値を持ち、値としてf(key_value)の結果を持つハッシュマップを作成したいと思っています。ブロックを使用してこれを行うための、Arrayのeach/mapのような、きれいで簡単な方法はありますか?

だから、何かと等価な

hsh = {}
[1,2,3,4].each do |x|
  hsh[x] = f(x)
end

が、シンプルで1行という点で、よりこれに近い感じ?

results = array.map { | x | f(x) }

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

ハッシュのデフォルト値として関数を定義することもできます。

hash = Hash.new {|hash, key| hash[key] = f(key) }

そうすると、値を調べるときに、ハッシュがその場で計算して保存してくれます。

hash[10]
hash.inspect #=> { 10 => whatever_the_result_is }