ハッシュの変更
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 を返します。
チャレンジ
簡単4行の入力を読み込んでください:
- 生徒の名前(文字列)
- 初期の成績(整数)
- 更新する新しい成績(整数)
key:value形式の新しいキーと値のペア(例:subject:Math)
以下の初期キーと値のペアを持つ student という名前のハッシュを作成します:
"name":生徒の名前にマッピング"grade":初期の成績(整数)にマッピング
次に、以下の修正を行ってください:
"grade"キーを新しい成績の値で更新します- 4番目の入力から取得したキーと値を使用して、新しいキーと値のペアを追加します(値は文字列のままにします)
- ハッシュから
"name"キーを削除し、削除された値を保存します
1行目に削除された名前を出力し、2行目に最終的なハッシュを出力してください。
例えば、入力が Alice、85、92、subject:Math の場合、出力は以下のようになります:
Alice
{"grade"=>92, "subject"=>"Math"}入力が Bob、70、75、status:passing の場合、出力は以下のようになります:
Bob
{"grade"=>75, "status"=>"passing"}入力が Charlie、100、95、note: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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。