Ruby 循環(huán)語(yǔ)句
循環(huán)是計(jì)算機(jī)系統(tǒng)重復(fù)執(zhí)行任務(wù)的機(jī)制。本章節(jié)中,我們會(huì)為大家講解在 Ruby 中如何進(jìn)行循環(huán)操作。
1. while
while
循環(huán)旨在重復(fù)執(zhí)行命令直到不滿足條件,語(yǔ)法如下:
實(shí)例:
i = 0
while i < 5 do
puts i
i += 1
end
# ---- 輸出結(jié)果 ----
0
1
2
3
4
解釋:i 的初始化值為0,因?yàn)?i<5
,所以進(jìn)入循環(huán)中不斷輸出并進(jìn)行加 1 的操作,直到 i 等于 5,不滿足 i<5
的條件后,跳出循環(huán)執(zhí)行完成。
**經(jīng)驗(yàn):**我們?cè)趯?shí)際開發(fā)中會(huì)省略 do
:
i = 0
while i < 5
puts i
i += 1
end
# ---- 輸出結(jié)果 ----
0
1
2
3
4
有時(shí)我們需要在條件執(zhí)行完之間停止循環(huán),這時(shí)我們會(huì)使用 break
:
i = 0
while i < 5
puts i
i += 1
break if i == 2
end
# ---- 輸出結(jié)果 ----
0
1
解釋:當(dāng) i 等于 2 的時(shí)候,強(qiáng)制中斷循環(huán)。
2. until
until
和 while
相反,它旨在重復(fù)執(zhí)行直到條件滿足為止。
實(shí)例:
i = 0
until i == 5
puts i
i += 1
end
# ---- 輸出結(jié)果 ----
0
1
2
3
4
until
也可以用作語(yǔ)句修飾符,后置使用:
實(shí)例:
i = 0
puts i += 1 until i == 5
# ---- 輸出結(jié)果 ----
1
2
3
4
5
3. for…in
for 循環(huán)是經(jīng)典的循環(huán)構(gòu)造,它允許任務(wù)重復(fù)特定的次數(shù)。Ruby 不同點(diǎn)在于,它可以和范圍(Range)結(jié)合。
實(shí)例:
for i in 1..8 do
puts i
end
# ---- 輸出結(jié)果 ----
1
2
3
4
5
6
7
8
一般來(lái)說(shuō) do
是可以省略的,除非代碼放到一行中。
實(shí)例:
for i in 1..8 do puts i end
# ---- 輸出結(jié)果 ----
1
2
3
4
5
6
7
8
我們還可以嵌套使用它:
實(shí)例:
for j in 1..5 do
for i in 1..5 do
print i, " "
end
puts
end
# ---- 輸出結(jié)果 ----
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
另外,break
語(yǔ)句可用于打破 for 循環(huán)(請(qǐng)注意,僅退出內(nèi)部for循環(huán),如果嵌套了該循環(huán),則外部循環(huán)將繼續(xù)循環(huán)運(yùn)行):
實(shí)例:
for j in 1..5 do
for i in 1..5 do
print i, " "
break if i == 2
end
end
# ---- 輸出結(jié)果 ----
1 2
1 2
1 2
1 2
1 2
next
會(huì)調(diào)到下一次循環(huán)。
實(shí)例:
for j in 1..5 do
for i in 1..5 do
next if i == 2
print i, " "
end
end
# ---- 輸出結(jié)果 ----
1 3 4 5
1 3 4 5
1 3 4 5
1 3 4 5
1 3 4 5
解釋:每當(dāng)循環(huán)到 i 等于 2 的時(shí)候直接跳過(guò)下面的內(nèi)容進(jìn)行下一次循環(huán)。
4. 小結(jié)
本小節(jié)中我們學(xué)習(xí)了 Ruby 的三種循環(huán)方式:while、until、for…in,以及在循環(huán)中我們可以通過(guò)break
來(lái)中斷循環(huán),使用next
直接進(jìn)行下一次循環(huán)的兩種控制語(yǔ)句。