ハッシュのキーとしてのシンボル
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キーの値を出力する- 値が
"black"の新しいキー:colorを追加する - 現在の値に1を加えて、
:yearキーを更新する - 最終的なハッシュを出力する
たとえば、入力が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"}自分で試してみよう
# 入力を読み込む
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: 以下にコードを書く
# 1. シンボルの省略記法を使い、:brand、:model、:year をキーに持つ 'car' という名前のハッシュを作成する
# 2. :model キーの値を出力する
# 3. 値が "black" の新しいキー :color を追加する
# 4. :year キーの現在の値に 1 を加えて更新する
# 5. 最終的なハッシュを出力するこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ