RubyのHash入門


RubyのHash(ハッシュ)型に関するTipsの紹介です。

🐯 ArrayからHashへの変換

いくつかの種類の配列からHashに変換するサンプルです。

KeyとValueが交互の配列

arr = [1, :dog, 2, :cat, 3, :geese]
Hash[*arr] #=> { 1 => :dog, 2 => :cat, 3 => :geese }

KeyとValueの配列が複数ある配列

arr = [][1, :dog], [2, :cat], [3, :geese]]
Hash[*arr.flatten] #=> { 1 => :dog, 2 => :cat, 3 => :geese }

キーとバリューがそれぞれ違う配列

keys = [1, 2, 3]
values = [:dog, :cat, :geese]
arr = [keys, values].transpose
Hash[*arr] #=> { 1 => :dog, 2 => :cat, 3 => :geese }

🚌 ネストした値を取得:dig

digはハッシュのネストした値を再帰的に取得するメソッドです。値がない場合にnilを返してくれるのが助かります。

h = { foo: {bar: {baz: 1}}}
h.dig(:foo, :bar, :baz) #=> 1
h.dig(:foo, :zot) #=> nil

😀 安全ではないハッシュを返す:to_unsafe_h

to_unsafe_hメソッドは安全ではない、フィルタされていないハッシュを返します。

params = ActionController::Parameters.new({
name: "Senjougahara Hitagi",
oddity: "Heavy stone crab"
})
params.to_unsafe_h
# => {"name"=>"Senjougahara Hitagi", "oddity" => "Heavy stone crab"}

😸 参考リンク

📚 おすすめの書籍