導入
ハッシュにも、配列と同じくよく使う操作をまとめたメソッドが用意されています。キーの一覧を取り出したり、2つのハッシュを合体させたりする方法を見ていきましょう。
説明
person = {name: "太郎", age: 20}
puts person.keys.inspect
puts person.values.inspect
merged = person.merge(city: "東京")
puts merged.inspect
puts person.fetch(:age)
puts person.fetch(:job, "無職")
.keysはキーだけを集めた配列、.valuesは値だけを集めた配列を返します。.merge(別のハッシュ)は、2つのハッシュを合体させた新しいハッシュを返します(同じキーがあれば後から渡した方で上書きされます)。.fetch(キー)は[キー]と似ていますが、存在しないキーを渡すと[]のように黙ってnilを返す代わりに、デフォルト値を指定できたり、エラーを出せたりして便利です。.fetch(:job, "無職")は:jobキーがなければ"無職"を返します。
やってみよう
merge に渡す内容を変えたり、fetch の第2引数(デフォルト値)をいろいろ変えたりして挙動を確かめましょう。
演習
ハッシュ stock = {apple: 5, banana: 3} の全キーを .keys で取り出し、.inspect で表示してください([:apple, :banana])。
ヒント1を見る
puts stock.keys.inspect の1行で求められます。
ヒント2を見る
.keys はハッシュのキーだけを配列にして返します。