Each 迭代器
本课属于 Coddy Ruby 学习旅程的“基础知识”单元。第 65 课,共 88 课。
与使用 for 或 while 循环相比,Ruby 提供了一种更优雅的方式来遍历数组。each 迭代器是 Ruby 中处理集合中每个元素的首选方式。
以下是基本语法:
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts fruit
end这会将每种水果分别输出到单独一行。竖线之间的变量(|fruit|)称为块变量。迭代器遍历数组时,它会临时保存每个元素。
对于单行代码块,你可以使用花括号代替 do...end:
numbers = [1, 2, 3]
numbers.each { |n| puts n * 2 }each 方法很强大,因为你可以对每个元素执行任何操作。下面是一个计算累计总和的示例:
prices = [10, 25, 15]
total = 0
prices.each do |price|
total += price
end
puts total # 输出:50与 for 循环不同,each 中的块变量会限制在块内,让代码更整洁,也更不容易出现意外行为。
挑战
简单读取一行输入,其中包含用逗号分隔的整数(例如,4,7,2,9,5)。
将输入拆分成整数数组,然后使用 each 迭代器来完成以下操作:
- 每行打印一个数字乘以 3 的结果
- 计算所有数字的总和,并在循环结束后打印
在循环之前,将一个变量初始化为 0,遍历数组时用它累计总和。
例如,如果输入是 4,7,2,9,5,输出应为:
12
21
6
27
15
Sum: 27如果输入是 10,20,30,输出应为:
30
60
90
Sum: 60如果输入是 1,2,3,4,输出应为:
3
6
9
12
Sum: 10如果输入是 5,输出应为:
15
Sum: 5亲手试试
# 读取用逗号分隔的整数
input = gets.chomp
# 将输入拆分为整数数组
numbers = input.split(",").map(&:to_i)
# 初始化 sum 变量
sum = 0
# TODO:在下方编写代码
# 使用 each 迭代器:
# 1. 输出每个数字乘以 3 的结果
# 2. 将每个数字加到 sum 变量中
# 输出最终的 sum
puts "Sum: #{sum}"这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Ruby 在线编译器