带索引的 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 方法无需你手动跟踪计数器变量,让代码更简洁,也更不容易出错。
挑战
简单读取一行输入,其中包含用逗号分隔的单词(例如,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”这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器