循环用于执行一段代码,直到满足特定条件为止。这可以帮助我们避免反复编写相同的代码。
Ruby 提供了多种循环技术。Ruby 中最常见的循环是
- while 循环
- until 循环
- for 循环
- times 循环
- each 循环
- loop do...end
- begin...end while
让我们从 while
循环开始。
Ruby while 循环
while
循环只要给定条件为 true
,就会执行一段代码。其语法是
while condition
# Code to execute
end
该循环的工作原理如下
while
循环首先检查condition
(条件)。- 如果
condition
为true
,则执行循环内的代码。 - 循环将一直继续,直到
condition
变为false
。 - 如果
condition
从一开始就是false
,则循环永远不会执行。
示例:Ruby while 循环
num = 1
# Use while loop to print numbers from 1 to 3
while num <= 3
puts num
num += 1
end
puts "Loop finished!"
输出
1 2 3 Loop finished!
在此,由于条件 num <= 3
,循环运行了三次。程序的运行方式如下
num
变量被初始化为 **1**。while
循环开始,因为条件num <= 3
为true
(因为 **1** 小于 **3**)。- 在循环内部,打印
num
的值。因此,我们得到 **1** 作为输出。 - 然后,使用代码
num += 1
将num
的值增加 **1**。 - 因此,循环的第一次迭代就结束了。
- 第二次迭代开始,因为
num <= 3
再次为true
(因为 **2** 小于 **3**)。 - 整个过程会一直重复,直到
num
大于 **3**。然后,循环终止。 - 结果是,打印了从 **1** 到 **3** 的所有数字。
- 最后,执行循环外的代码。因此,打印了
Loop finished!
。
要了解更多信息,请访问 Ruby while 循环。
Ruby until 循环
until
循环与 while
循环相反。它执行一段代码,直到给定条件变为 true
。其语法是
until condition
# Code to execute
end
示例:Ruby until 循环
x = 1
until x > 3
puts x
x += 1
end
输出
1 2 3
在此示例中,循环运行直到 x > 3
变为 true
。换句话说,当 x
变为 **4** 时停止。
Ruby for 循环
Ruby 中的 for
循环用于迭代范围或集合(如数组或哈希)。其语法是
for variable in collection
# Code to execute
end
这里,
注意: 许多 Ruby 程序员在迭代集合时更喜欢使用 each
循环而不是 for
循环。
示例:Ruby for 循环(带范围)
for i in 4..6
puts i
end
输出
4 5 6
在此,for
循环迭代范围 4..6
。因此,循环对数字 **4**、**5** 和 **6** 运行了三次。
在循环的每次迭代中,变量 i
取从 **4** 到 **6** 的值,然后打印到屏幕上。它的工作方式如下
循环迭代 | i 的值 |
---|---|
第一次 | 4 |
第二次 | 5 |
第三次 | 6 |
示例:Ruby for 循环(带数组)
people = ["Bob", "Alex", "Sharon", "Cassie"]
for person in people
puts person
end
输出
Bob Alex Sharon Cassie
在此,for
循环迭代 people
数组。在循环的每次迭代中,变量 person
取数组中的相应元素。它的工作方式如下
循环迭代 | person 的值 |
---|---|
1 | "Bob" |
2 | "Alex" |
3 | "Sharon" |
4 | "Cassie" |
要了解更多信息,请访问 Ruby for 和 each 循环。
Ruby times 循环
times
循环是一种重复执行某事固定次数的简洁方式。
times
循环的语法是
n.times do
# Code to execute
end
在此,循环重复执行 n
次。
示例:Ruby times 循环
3.times do
puts "Knock!"
end
输出
Knock! Knock! Knock!
上面的循环运行了三次。在每次迭代中,我们打印字符串 "Knock!"
。因此,"Knock!"
打印了三次。
注意: 我们经常使用 times
循环进行简单的重复。
Ruby each 循环
each
循环用于迭代集合(如数组)中的每个元素。其语法是
collection.each do |item|
# Code using item
end
这里,
collection
- 一个值集合,如数组或哈希。item
- 一个占位符,在每次迭代中存储collection
中每个元素的值。
示例:Ruby each 循环
people = ["Bob", "Alex", "Sharon", "Cassie"]
people.each do |person|
puts person
end
输出
Bob Alex Sharon Cassie
在此,each
循环对 people
数组中的每个元素运行一次。
在循环的每次迭代中,person
变量获取 people
数组中的一个元素,这与我们 for
循环示例的工作方式类似。
循环迭代 | person 的值 |
---|---|
1 | "Bob" |
2 | "Alex" |
3 | "Sharon" |
4 | "Cassie" |
要了解更多信息,请访问 Ruby for 和 each 循环。
Ruby loop do...end
loop do...end
会无限循环,除非我们显式使用 break
等控制语句来退出循环。其语法是
loop do
# Code to execute
end
示例:Ruby loop with break
i = 1
loop do
puts i
i += 1
# Terminate the loop if i is greater than 3
break if i > 3
end
输出
1 2 3
在此,循环无限运行,但当 i
大于 **3** 时,break
语句会停止它。
请注意,此循环的行为类似于 while
循环,但我们需要自己管理 break
条件。
要了解更多信息,请访问 Ruby loop do。
Ruby begin...end while 循环
Ruby 还提供了 begin...end while
循环,这类似于其他语言中的 do...while
循环。
在此循环中,代码至少执行一次,然后才检查条件。其语法是
begin
# Code to execute
end while condition
在此,begin
循环首先执行代码,然后才检查 condition
(条件)。
- 如果
condition
为true
,则循环再次运行。 - 如果
condition
为false
,则循环结束。
示例:Ruby begin...end while 循环
x = 1
begin
puts x
x += 1
end while x <= 3
输出
1 2 3
在此,循环打印 x
的值,从 **1** 开始,直到 x
变为 **4**。
正如你所看到的,这个循环的作用就像一个 while
循环,但第一次迭代总是会发生,无论条件是 true
还是 false
。
注意: begin...end while
循环被许多 Ruby 开发人员不推荐使用,因为它会降低可读性并使代码更难维护。相反,他们更喜欢使用带 break
语句的 loop do...end
,这样更清晰、更灵活。