ハッシュのキーとしてのシンボル
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 78/88。
これまで、ハッシュロケット構文を使用して文字列をハッシュのキーとして使用してきました。しかし、Ruby開発者は一般的に、代わりにシンボルをキーとして使用します。これにより、よりクリーンで効率的なアプローチが可能になります。
以前に学習したシンボルを覚えていますか?これらはコロンで始まる、軽量で不変の識別子です。シンボルをキーとして使用する場合、Rubyは特別な短縮構文を提供します:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # 出力: {:name=>"Alice", :age=>25, :city=>"Paris"}name: が :name => を置き換えていることに注目してください。この短縮記法は、キーがシンボルの場合にのみ機能します。値にアクセスするには、角括弧でシンボルを使用します:
person = {name: "Alice", age: 25}
puts person[:name] # 出力: Alice
puts person[:age] # 出力: 25エントリの追加と変更は、同じ方法で行います:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # 出力: {:name=>"Bob", :city=>"Paris"}シンボルは、文字列よりも比較が速く、メモリの使用量も少ないため、ハッシュキーとして好まれます。このパターンはRubyのコードの至る所で見られるので、慣れておく価値があります。
チャレンジ
簡単3行の入力を読み込んでください:
- 車のブランド (文字列)
- モデル名 (文字列)
- 年式 (整数)
シンボルの短縮構文(例:key: value)を使用して、以下のキーと値のペアを持つcarという名前のハッシュを作成してください:
:brand:車のブランドに対応:model:モデル名に対応:year:年式(整数)に対応
その後、以下の操作を実行してください:
:modelキーの値を出力する- 新しいキー
:colorに値"black"を追加する :yearキーの現在の値に1を加えて更新する- 最終的なハッシュを出力する
例えば、入力がToyota、Camry、2020の場合、出力は以下のようになります:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}入力がHonda、Civic、2018の場合、出力は以下のようになります:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}入力がFord、Mustang、2023の場合、出力は以下のようになります:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}チートシート
Rubyは、シンボルをキーとするハッシュを作成するための短縮構文を提供しています。
person = {name: "Alice", age: 25, city: "Paris"}これは、シンボルを用いたハッシュロケット構文を使用するのと同等です。
person = {:name => "Alice", :age => 25, :city => "Paris"}シンボルキーを持つハッシュから値にアクセスするには、シンボルを指定した角括弧を使用します。
puts person[:name] # Outputs: Alice
puts person[:age] # Outputs: 25エントリの追加や変更は、文字列キーの場合と同じように機能します。
person[:city] = "Paris" # 新しいキーと値のペアを追加
person[:name] = "Bob" # 既存の値を変更シンボルは文字列よりも比較が速く、メモリ使用量も少ないため、ハッシュのキーとして好まれます。
自分で試してみよう
# 入力を読み込む
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: 以下にコードを記述してください
# 1. :brand, :model, :year をキーに持つハッシュ 'car' をシンボルの省略記法で作成してください
# 2. :model キーの値を表示してください
# 3. 新しいキー :color を値 "black" で追加してください
# 4. :year キーの値を現在の値に1を加えて更新してください
# 5. 最終的なハッシュを表示してくださいこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。