ハッシュの変更
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"}自分で試してみよう
# 入力を読み込む
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このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ