Menu
CoddyTech

ハッシュのキーとしてのシンボル

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のコードでよく見かけるので、慣れておくとよいでしょう。

challenge icon

チャレンジ

簡単

入力を3行読み込みます。

  1. 車のブランド(文字列)
  2. モデル名(文字列)
  3. 年(整数)

次のキーと値の組を使い、シンボルの省略記法(例:key: value)で、carという名前のハッシュを作成します。

  • :brandに車のブランドを対応させる
  • :modelにモデル名を対応させる
  • :yearに年(整数)を対応させる

次に、以下の操作を行います。

  1. :modelキーの値を出力する
  2. 値が"black"の新しいキー:colorを追加する
  3. 現在の値に1を加えて、:yearキーを更新する
  4. 最終的なハッシュを出力する

たとえば、入力が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. 最終的なハッシュを出力する
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rubyオンラインコンパイラ