Menu
CoddyTech

修改哈希

本课属于 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" 键,并存储删除的值

第一行打印删除的姓名,然后在第二行打印最终的哈希。

例如,如果输入为 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Ruby 在线编译器