修改哈希
本课属于 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"键,并存储删除的值
第一行打印删除的姓名,然后在第二行打印最终的哈希。
例如,如果输入为 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. 创建一个名为 'student' 的哈希表,包含 "name" 和 "grade" 键
# 2. 用新的成绩值更新 "grade" 键
# 3. 解析 key_value_pair,并将其添加到哈希表中
# 4. 删除 "name" 键,并保存被删除的值
# 输出被删除的名字
puts removed_name
# 输出最终的哈希表
puts student这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器