新聞中心
Ruby 中的循環(huán)用于執(zhí)行相同的代碼塊若干次。本章節(jié)將詳細(xì)介紹 Ruby 支持的所有循環(huán)語句。

while 語句
語法
while conditional [do] code end
或者
while conditional [:] code end當(dāng) conditional 為真時(shí),執(zhí)行 code。
語法中 do 或 : 可以省略不寫。但若要在一行內(nèi)寫出 while 式,則必須以 do 或 : 隔開條件式或程式區(qū)塊。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num do puts("在循環(huán)語句中 i = #$i" ) $i +=1 end嘗試一下 ?
以上實(shí)例輸出結(jié)果為:
在循環(huán)語句中 i = 0 在循環(huán)語句中 i = 1 在循環(huán)語句中 i = 2 在循環(huán)語句中 i = 3 在循環(huán)語句中 i = 4while 修飾符
語法
code while condition 或者 begin code end while conditional當(dāng) conditional 為真時(shí),執(zhí)行 code。
如果 while 修飾符跟在一個(gè)沒有 rescue 或 ensure 子句的 begin 語句后面,code 會(huì)在 conditional 判斷之前執(zhí)行一次。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("在循環(huán)語句中 i = #$i" ) $i +=1 end while $i < $num嘗試一下 ?
以上實(shí)例輸出結(jié)果為:
在循環(huán)語句中 i = 0 在循環(huán)語句中 i = 1 在循環(huán)語句中 i = 2 在循環(huán)語句中 i = 3 在循環(huán)語句中 i = 4until 語句
until conditional [do] code end當(dāng) conditional 為假時(shí),執(zhí)行 code。
語法中 do 可以省略不寫。但若要在一行內(nèi)寫出 until 式,則必須以 do 隔開條件式或程式區(qū)塊。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 until $i > $num do puts("在循環(huán)語句中 i = #$i" ) $i +=1; end嘗試一下 ?
這將產(chǎn)生以下結(jié)果:
在循環(huán)語句中 i = 0 在循環(huán)語句中 i = 1 在循環(huán)語句中 i = 2 在循環(huán)語句中 i = 3 在循環(huán)語句中 i = 4 在循環(huán)語句中 i = 5until 修飾符
語法
code until conditional 或者 begin code end until conditional當(dāng) conditional 為假時(shí),執(zhí)行 code。
如果 until 修飾符跟在一個(gè)沒有 rescue 或 ensure 子句的 begin 語句后面,code 會(huì)在 conditional 判斷之前執(zhí)行一次。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("在循環(huán)語句中 i = #$i" ) $i +=1; end until $i > $num嘗試一下 ?
這將產(chǎn)生以下結(jié)果:
在循環(huán)語句中 i = 0 在循環(huán)語句中 i = 1 在循環(huán)語句中 i = 2 在循環(huán)語句中 i = 3 在循環(huán)語句中 i = 4 在循環(huán)語句中 i = 5for 語句
語法
for variable [, variable ...] in expression [do] code end針對 expression 中的每個(gè)元素分別執(zhí)行一次 code。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "局部變量的值為 #{i}" end在這里,我們已經(jīng)定義了范圍 0..5。語句 for i in 0..5 允許 i 的值從 0 到 5(包含 5)。
嘗試一下 ?以上實(shí)例輸出結(jié)果為:
局部變量的值為 0 局部變量的值為 1 局部變量的值為 2 局部變量的值為 3 局部變量的值為 4 局部變量的值為 5for...in 循環(huán)幾乎是完全等價(jià)于:
(expression).each do |variable[, variable...]| code end但是,for 循環(huán)不會(huì)為局部變量創(chuàng)建一個(gè)新的作用域。
語法中 do 可以省略不寫。但若要在一行內(nèi)寫出 for 式,則必須以 do 隔開條件式或程式區(qū)塊。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "局部變量的值為 #{i}" end嘗試一下 ?
以上實(shí)例輸出結(jié)果為:
局部變量的值為 0 局部變量的值為 1 局部變量的值為 2 局部變量的值為 3 局部變量的值為 4 局部變量的值為 5break 語句
語法
break終止最內(nèi)部的循環(huán)。如果在塊內(nèi)調(diào)用,則終止相關(guān)塊的方法(方法返回 nil)。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "局部變量的值為 #{i}" end嘗試一下 ?
以上實(shí)例輸出結(jié)果為:
局部變量的值為 0 局部變量的值為 1 局部變量的值為 2next 語句
語法
next跳到最內(nèi)部循環(huán)的下一個(gè)迭代。如果在塊內(nèi)調(diào)用,則終止塊的執(zhí)行(yield 或調(diào)用返回 nil)。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "局部變量的值為 #{i}" end嘗試一下 ?
以上實(shí)例輸出結(jié)果為:
局部變量的值為 2 局部變量的值為 3 局部變量的值為 4 局部變量的值為 5redo 語句
語法
redo重新開始最內(nèi)部循環(huán)的該次迭代,不檢查循環(huán)條件。如果在塊內(nèi)調(diào)用,則重新開始 yield 或 call。
實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "局部變量的值為 #{i}" redo end end這將產(chǎn)生以下結(jié)果,并會(huì)進(jìn)入一個(gè)無限循環(huán):
局部變量的值為 0 局部變量的值為 0 ............................retry 語句
語法
retry如果 retry 出現(xiàn)在 begin 表達(dá)式的 rescue 子句中,則從 begin 主體的開頭重新開始。
begin do_something # 拋出的異常 rescue # 處理錯(cuò)誤 retry # 重新從 begin 開始 end如果 retry 出現(xiàn)在迭代內(nèi)、塊內(nèi)或者 for 表達(dá)式的主體內(nèi),則重新開始迭代調(diào)用。迭代的參數(shù)會(huì)重新評估。
for i in 1..5 retry if some_condition # 重新從 i == 1 開始 end實(shí)例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "局部變量的值為 #{i}" end這將產(chǎn)生以下結(jié)果,并會(huì)進(jìn)入一個(gè)無限循環(huán):
局部變量的值為 1 局部變量的值為 2 局部變量的值為 1 局部變量的值為 2 局部變量的值為 1 局部變量的值為 2 ............................
網(wǎng)頁名稱:創(chuàng)新互聯(lián)Ruby教程:Ruby循環(huán)
URL網(wǎng)址:http://m.fisionsoft.com.cn/article/djdgode.html


咨詢
建站咨詢
