Menu
CoddyTech

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 中的块变量会限制在块内,让代码更整洁,也更不容易出现意外行为。

challenge icon

挑战

简单

读取一行输入,其中包含用逗号分隔的整数(例如,4,7,2,9,5)。

将输入拆分成整数数组,然后使用 each 迭代器来完成以下操作:

  1. 每行打印一个数字乘以 3 的结果
  2. 计算所有数字的总和,并在循环结束后打印

在循环之前,将一个变量初始化为 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}"
quiz icon自我测试

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

基础知识中的所有课

自己练习: Ruby 在线编译器