Menu
CoddyTech

哈希方法

本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 76 课,共 88 课。

Ruby 提供了几种内置方法,帮助你更有效地检查和使用哈希。这些方法让你能快速获取有关哈希内容的信息。

keys 方法会返回哈希中所有键组成的数组:

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

puts person.keys  # 输出 name、age 和 city,每个各占一行

同样,values 方法会返回包含所有值的数组:

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

puts person.values  # 输出 Alice、25 和 Paris,每个值各占一行

要检查某个键是否存在,可以使用 key? 或它的别名 has_key?:

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

puts person.key?("name")     # 输出:true
puts person.key?("country")  # 输出:false

length 方法会告诉你哈希中有多少个键值对:

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

puts person.length  # 输出:3

最后,empty? 会检查哈希中是否有任何键值对:

data = {}
puts data.empty?  # 输出:true
challenge icon

挑战

简单

读取两行输入:

  1. 一个由逗号分隔的键值对组成的哈希,格式为 key:value(例如,name:Alice,age:25,city:Paris)
  2. 要检查是否存在的键(字符串)

解析第一行输入以创建哈希,然后使用你学过的哈希方法,输出以下信息,每项单独占一行:

  1. 输出哈希中的每个键(每行一个)
  2. 输出 --- 作为分隔符
  3. 输出哈希中的每个值(每行一个)
  4. 输出 --- 作为分隔符
  5. 输出哈希中键值对的数量
  6. 输出 --- 作为分隔符
  7. 输出 true 或 false,表示哈希是否为空
  8. 输出 --- 作为分隔符
  9. 输出 true 或 false,表示第二行输入中的键是否存在于哈希中

例如,如果输入为 name:Alice,age:25,city:Paris 和 age,输出应为:

name
age
city
---
Alice
25
Paris
---
3
---
false
---
true

如果输入为 product:Laptop,price:999 和 stock,输出应为:

product
price
---
Laptop
999
---
2
---
false
---
false

如果输入为 status:active 和 status,输出应为:

status
---
active
---
1
---
false
---
true

亲手试试

# 读取输入
input_string = gets.chomp
key_to_check = gets.chomp

# 解析输入字符串,创建一个哈希表
hash = {}
input_string.split(',').each do |pair|
  key, value = pair.split(':')
  hash[key] = value
end

# TODO:在下方编写你的代码
# 使用哈希表的方法:
# 1. 输出每个键(每行一个)
# 2. 输出 "---" 作为分隔符
# 3. 输出每个值(每行一个)
# 4. 输出 "---" 作为分隔符
# 5. 输出键值对的数量
# 6. 输出 "---" 作为分隔符
# 7. 如果 hash 为空,输出 true/false
# 8. 输出 "---" 作为分隔符
# 9. 如果 key_to_check 存在于 hash 中,输出 true,否则输出 false
quiz icon自我测试

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

基础知识中的所有课

自己练习: Ruby 在线编译器