Menu
Coddy logo textTech

ハッシュの変更

CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 75/88。

ハッシュは一度作成されたら静的なものではありません。プログラムの実行中に、新しいキーと値のペアを追加したり、既存の値を更新したり、エントリを削除したりすることができます。

新しいペアを追加したり、既存の値を更新したりするには、角括弧を使用してキーに代入します:

person = {"name" => "Alice", "age" => 25}

person["city"] = "Paris"      # 新しいキーと値のペアを追加します
person["age"] = 26            # 既存の値を更新します

puts person  # 出力: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}

キーが存在する場合、値は置き換えられます。存在しない場合、新しいペアがハッシュに追加されます。

キーと値のペアを削除するには、削除したいキーを指定して delete メソッドを使用します:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}

person.delete("city")

puts person  # 出力: {"name"=>"Alice", "age"=>25}

delete メソッドは削除された値を返します。これは、その値を使用する必要がある場合に便利です。

person = {"name" => "Alice", "age" => 25}

removed_age = person.delete("age")

puts removed_age  # 出力: 25

存在しないキーを削除しようとすると、Rubyはエラーを発生させずに単に nil を返します。

challenge icon

チャレンジ

簡単

4行の入力を読み込んでください:

  1. 生徒の名前(文字列)
  2. 初期の成績(整数)
  3. 更新する新しい成績(整数)
  4. key:value 形式の新しいキーと値のペア(例:subject:Math

以下の初期キーと値のペアを持つ student という名前のハッシュを作成します:

  • "name":生徒の名前にマッピング
  • "grade":初期の成績(整数)にマッピング

次に、以下の修正を行ってください:

  1. "grade" キーを新しい成績の値で更新します
  2. 4番目の入力から取得したキーと値を使用して、新しいキーと値のペアを追加します(値は文字列のままにします)
  3. ハッシュから "name" キーを削除し、削除された値を保存します

1行目に削除された名前を出力し、2行目に最終的なハッシュを出力してください。

例えば、入力が Alice8592subject:Math の場合、出力は以下のようになります:

Alice
{"grade"=>92, "subject"=>"Math"}

入力が Bob7075status:passing の場合、出力は以下のようになります:

Bob
{"grade"=>75, "status"=>"passing"}

入力が Charlie10095note:excellent の場合、出力は以下のようになります:

Charlie
{"grade"=>95, "note"=>"excellent"}

チートシート

ハッシュに新しいキーと値のペアを追加したり、既存の値を更新したりするには、角括弧を使用します:

person = {"name" => "Alice", "age" => 25}

person["city"] = "Paris"      # 新しいキーと値のペアを追加します
person["age"] = 26            # 既存の値を更新します

puts person  # 出力: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}

キーが存在する場合、値は置き換えられます。存在しない場合は、新しいペアが追加されます。

キーと値のペアを削除するには、deleteメソッドを使用します:

person = {"name" => "Alice", "age" => 25, "city" => "Paris"}

person.delete("city")

puts person  # 出力: {"name"=>"Alice", "age"=>25}

deleteメソッドは、削除された値を返します:

removed_age = person.delete("age")

puts removed_age  # 出力: 25

存在しないキーを削除しようとすると、Rubyはエラーを発生させずにnilを返します。

自分で試してみよう

# 入力を読み込む
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp

# TODO: 以下にコードを記述してください
# 1. "name" と "grade" というキーを持つ 'student' というハッシュを作成する
# 2. "grade" キーを新しい成績の値で更新する
# 3. key_value_pair を解析してハッシュに追加する
# 4. "name" キーを削除し、削除された値を保存する

# 削除された名前を出力する
puts removed_name
# 最終的なハッシュを出力する
puts student
quiz icon腕試し

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

基礎のすべてのレッスン