Ruby 循环
在 Ruby 编程语言中,循环是一种用于重复执行代码块的结构。以下是对 Ruby 中常见循环结构的中文讲解,涵盖主要类型及其用法,力求简洁清晰:
1. while 循环
while
循环在条件为真时重复执行代码块。
# 语法
while 条件 do
# 代码块
end
# 示例
count = 1
while count <= 5 do
puts "第 #{count} 次循环"
count += 1
end
输出:
第 1 次循环
第 2 次循环
第 3 次循环
第 4 次循环
第 5 次循环
说明:当 count <= 5
为真时,循环继续;条件为假时,循环结束。do
可以省略,单行时可用冒号 :
代替。
2. until 循环
until
循环与 while
相反,在条件为假时执行代码块。
# 语法
until 条件 do
# 代码块
end
# 示例
count = 1
until count > 5 do
puts "第 #{count} 次循环"
count += 1
end
输出:与 while
示例相同。
说明:until
相当于“直到条件为真才停止”。do
同样可省略。
3. for 循环
for
循环用于遍历范围、数组或其他可迭代对象。
# 语法
for 变量 in 集合 do
# 代码块
end
# 示例
for i in 1..5 do
puts "第 #{i} 次循环"
end
输出:同上。
说明:
1..5
表示包含 1 到 5 的范围(包括 5)。1...5
表示 1 到 4(不包括 5)。for
循环在 Ruby 中较少使用,因为迭代器(如each
)更常见。
4. each 迭代器
Ruby 中更推荐使用 each
方法迭代数组、范围等,语法更简洁。
# 语法
集合.each do |变量|
# 代码块
end
# 示例
(1..5).each do |i|
puts "第 #{i} 次循环"
end
输出:同上。
说明:
each
是 Ruby 中最常用的迭代方式,适用于数组、哈希、范围等。- 单行可用
{}
代替do...end
:
(1..5).each { |i| puts "第 #{i} 次循环" }
5. times 循环
times
是整数对象的方法,用于执行指定次数的循环。
# 语法
n.times do |变量|
# 代码块
end
# 示例
5.times do |i|
puts "第 #{i + 1} 次循环"
end
输出:同上。
说明:i
从 0 开始,循环执行 n
次。单行可用 {}
。
6. loop 方法
loop
是一个无限循环,除非通过 break
终止。
# 语法
loop do
# 代码块
break if 条件
end
# 示例
count = 1
loop do
puts "第 #{count} 次循环"
count += 1
break if count > 5
end
输出:同上。
说明:适合需要手动控制终止条件的场景。
7. 循环控制语句
- break:跳出循环,终止执行。
for i in 1..5
break if i == 3
puts i
end
# 输出:1, 2
- next:跳过当前循环,进入下一次迭代。
for i in 1..5
next if i == 3
puts i
end
# 输出:1, 2, 4, 5
- redo:重新执行当前循环(不重新检查条件)。
for i in 1..5
puts i
redo if i == 3
break if i == 3
end
# 输出:1, 2, 3(重复多次直到其他条件终止)
8. 其他迭代器
- map/collect:遍历并返回新数组。
array = [1, 2, 3]
new_array = array.map { |x| x * 2 }
puts new_array # 输出:[2, 4, 6]
- select:筛选符合条件的元素。
array = [1, 2, 3, 4]
even = array.select { |x| x.even? }
puts even # 输出:[2, 4]
注意事项
- Ruby 强调简洁和可读性,推荐使用
each
、map
等迭代器代替传统循环。 - 避免无限循环,确保有退出条件(如
break
)。 - 循环中变量的作用域:
for
和each
的块内变量在块外不可用(块作用域)。
如果你有具体问题或需要更深入的示例,请告诉我!