スキップしてメイン コンテンツに移動

Rubyハッシュ操作: fetch

Rubyハッシュ操作: fetch

ハッシュの基本

Ruby基礎の中でもハッシュ操作は頻繁に使われる重要なテーマです。ハッシュはキーと値のペアを格納する連想配列で、Hash.new{}で簡単に作成できます。キーは文字列、シンボル、数値など任意のオブジェクトを使えますが、シンボルが最も一般的です。

person = { name: "太郎", age: 30, city: "東京" }

上記の例では、nameagecityがキーで、それぞれの値が格納されています。ハッシュは可変であり、後からキーと値を追加・削除できます。

each_keyとeach_value

ハッシュのキー一覧を取得したい場合はeach_key、値一覧を取得したい場合はeach_valueを使います。これらはブロックを受け取り、キーまたは値を順に処理します。

person.each_key do |k|
  puts "キー: #{k}"
end

person.each_value do |v|
  puts "値: #{v}"
end

上記のコードは、キーと値をそれぞれコンソールに出力します。each_keyeach_valueはハッシュのイテレーションを簡潔に書くために便利です。

fetchとstore

ハッシュから値を取得する際に、キーが存在しない場合にエラーを防ぎたいときはfetchメソッドが有効です。fetchはデフォルト値やブロックを指定でき、存在しないキーに対しても安全に処理できます。

puts person.fetch(:age, "未設定")          # 30
puts person.fetch(:salary, "未設定")        # 未設定

# ブロックを使う例
puts person.fetch(:salary) { |k| "デフォルト値" }  # デフォルト値

一方、ハッシュに新しいキーと値を追加したい場合はstoreメソッドを使います。storeと同等ですが、メソッド名が明示的で読みやすいです。

person.store(:salary, 50000)
puts person[:salary]  # 50000

keys, values, 存在確認

ハッシュのキー一覧を配列で取得したいときはkeys、値一覧を取得したいときはvaluesを使います。これらはハッシュの全キー・全値を配列として返します。

puts person.keys.inspect   # [:name, :age, :city, :salary]
puts person.values.inspect  # ["太郎", 30, "東京", 50000]

キーの存在確認はkey?またはhas_key?メソッドで行います。存在確認は条件分岐でよく使われます。

if person.key?(:age)
  puts "年齢は #{person[:age]} 歳です"
else
  puts "年齢情報がありません"
end

これらのメソッドを組み合わせることで、ハッシュ操作はより安全かつ直感的に行えます。Ruby基礎のハッシュ操作をマスターすれば、データ構造の扱いが格段に楽になります。

この記事はAIによって作成されました。

コメント