本文へスキップ
BecomeCoder

Rubyコース · 第4章 ハッシュ · レッスン20

便利メソッド ― keys/values/merge/fetch

ブラウザで完結

導入

ハッシュにも、配列と同じくよく使う操作をまとめたメソッドが用意されています。キーの一覧を取り出したり、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 はハッシュのキーだけを配列にして返します。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。