Menu
CoddyTech

带索引的 Each

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

有时,你不仅需要知道正在处理的元素,还需要知道它在数组中的位置。Ruby 的 each_with_index 方法会在一次迭代中同时提供元素及其索引。

它的工作原理如下:

fruits = ["apple", "banana", "cherry"]

fruits.each_with_index do |fruit, index|
  puts "#{index}: #{fruit}"
end

输出如下:

0: apple
1: banana
2: cherry

注意,现在这个代码块在竖线之间接收两个变量:先是元素,然后是索引。索引从 0 开始,就像直接访问数组元素时一样。

当你需要显示带编号的列表或跟踪位置时,这尤其有用:

tasks = ["Buy groceries", "Clean room", "Call mom"]

tasks.each_with_index do |task, i|
  puts "Task #{i + 1}: #{task}"
end

将索引加 1,就能创建一个从 1 而不是 0 开始、便于人阅读的编号列表。each_with_index 方法无需你手动跟踪计数器变量,让代码更简洁,也更不容易出错。

challenge icon

挑战

简单

读取一行输入,其中包含用逗号分隔的单词(例如,apple,banana,cherry,date)。

将输入拆分为字符串数组,然后使用 each_with_index 将每个项目打印为从 1(而不是 0)开始编号的列表。

每行应遵循以下格式:Item 1: apple

例如,如果输入是 apple,banana,cherry,date,输出应为:

Item 1: apple
Item 2: banana
Item 3: cherry
Item 4: date

如果输入是 red,green,blue,输出应为:

Item 1: red
Item 2: green
Item 3: blue

如果输入是 monday,tuesday,wednesday,thursday,friday,输出应为:

Item 1: monday
Item 2: tuesday
Item 3: wednesday
Item 4: thursday
Item 5: friday

如果输入是 solo,输出应为:

Item 1: solo

亲手试试

# 读取以逗号分隔的输入
input = gets.chomp

# 将输入拆分成数组
items = input.split(",")

# TODO:使用 each_with_index 将每个元素打印为带编号的列表
# 记住:索引从 0 开始,但显示时要从 1 开始
# 格式:“Item 1: apple”
quiz icon自我测试

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

基础知识中的所有课

自己练习: Ruby 在线编译器