Rubyハッシュ操作: fetch
ハッシュの基本
Ruby基礎の中でもハッシュ操作は頻繁に使われる重要なテーマです。ハッシュはキーと値のペアを格納する連想配列で、Hash.newや{}で簡単に作成できます。キーは文字列、シンボル、数値など任意のオブジェクトを使えますが、シンボルが最も一般的です。
person = { name: "太郎", age: 30, city: "東京" }
上記の例では、name、age、cityがキーで、それぞれの値が格納されています。ハッシュは可変であり、後からキーと値を追加・削除できます。
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_keyとeach_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基礎のハッシュ操作をマスターすれば、データ構造の扱いが格段に楽になります。
コメント
コメントを投稿