Ruby 中的循環(huán)用于執(zhí)行相同的代碼塊若干次。本章節(jié)將詳細(xì)介紹 Ruby 支持的所有循環(huán)語句。
Ruby while 語句
語法
while conditional [do] codeend
當(dāng) conditional 為真時(shí),執(zhí)行 code。while 循環(huán)的 conditional 通過保留字 do、一個(gè)換行符、反斜線 / 或一個(gè)分號(hào) ; ,來與 code 分離開。
實(shí)例
#!/usr/bin/ruby $i = 0$num = 5 while $i < $num do puts("Inside the loop i = #$i" ) $i +=1end
這將產(chǎn)生以下結(jié)果:
Inside the loop i = 0Inside the loop i = 1Inside the loop i = 2Inside the loop i = 3Inside the loop i = 4
Ruby while 修飾符
語法
code while condition OR begin codeend while conditional
當(dāng) conditional 為真時(shí),執(zhí)行 code。
如果 while 修飾符跟在一個(gè)沒有 rescue 或 ensure 子句的 begin 語句后面,code 會(huì)在 conditional 判斷之前執(zhí)行一次。
實(shí)例
#!/usr/bin/ruby $i = 0$num = 5begin puts("Inside the loop i = #$i" ) $i +=1end while $i < $num
這將產(chǎn)生以下結(jié)果:
Inside the loop i = 0Inside the loop i = 1Inside the loop i = 2Inside the loop i = 3Inside the loop i = 4Ruby until 語句until conditional [do] codeend
當(dāng) conditional 為假時(shí),執(zhí)行 code。until 語句的 conditional 通過保留字 do、一個(gè)換行符或一個(gè)分號(hào),來與 code 分離開。
實(shí)例
#!/usr/bin/ruby $i = 0$num = 5 until $i > $num do puts("Inside the loop i = #$i" ) $i +=1;end
這將產(chǎn)生以下結(jié)果:
Inside the loop i = 0Inside the loop i = 1Inside the loop i = 2Inside the loop i = 3Inside the loop i = 4Inside the loop i = 5Ruby until 修飾符語法code until conditional OR begin codeend until conditional
當(dāng) conditional 為假時(shí),執(zhí)行 code。
如果 until 修飾符跟在一個(gè)沒有 rescue 或 ensure 子句的 begin 語句后面,code 會(huì)在 conditional 判斷之前執(zhí)行一次。
實(shí)例
#!/usr/bin/ruby $i = 0$num = 5begin puts("Inside the loop i = #$i" ) $i +=1;end until $i > $num
這將產(chǎn)生以下結(jié)果:
Inside the loop i = 0Inside the loop i = 1Inside the loop i = 2Inside the loop i = 3Inside the loop i = 4Inside the loop i = 5
Ruby for 語句
語法
for variable [, variable ...] in expression [do] codeend
針對(duì) expression 中的每個(gè)元素分別執(zhí)行一次 code。
實(shí)例
#!/usr/bin/ruby for i in 0..5 puts "Value of local variable is #{i}"end
在這里,我們已經(jīng)定義了范圍 0..5。語句 for i in 0..5 允許 i 的值從 0 到 5(包含 5)。這將產(chǎn)生以下結(jié)果:
Value of local variable is 0Value of local variable is 1Value of local variable is 2Value of local variable is 3Value of local variable is 4Value of local variable is 5
for...in 循環(huán)幾乎是完全等價(jià)于:
(expression).each do |variable[, variable...]| code end
但是,for 循環(huán)不會(huì)為局部變量創(chuàng)建一個(gè)新的作用域。for 循環(huán)的 expression 通過保留字 do、一個(gè)換行符或一個(gè)分號(hào),來與 code 分離開。.
實(shí)例
#!/usr/bin/ruby (0..5).each do |i| puts "Value of local variable is #{i}"end
這將產(chǎn)生以下結(jié)果:
Value of local variable is 0Value of local variable is 1Value of local variable is 2Value of local variable is 3Value of local variable is 4Value of local variable is 5
Ruby break 語句
語法
break
終止最內(nèi)部的循環(huán)。如果在塊內(nèi)調(diào)用,則終止相關(guān)塊的方法(方法返回 nil)。
實(shí)例
#!/usr/bin/ruby for i in 0..5 if i > 2 then break end puts "Value of local variable is #{i}"end
這將產(chǎn)生以下結(jié)果:
Value of local variable is 0Value of local variable is 1Value of local variable is 2
Ruby next 語句
語法
next
跳到最內(nèi)部循環(huán)的下一個(gè)迭代。如果在塊內(nèi)調(diào)用,則終止塊的執(zhí)行(yield 或調(diào)用返回 nil)。
實(shí)例
#!/usr/bin/ruby for i in 0..5 if i < 2 then next end puts "Value of local variable is #{i}"end
這將產(chǎn)生以下結(jié)果:
Value of local variable is 2Value of local variable is 3Value of local variable is 4Value of local variable is 5
Ruby redo 語句
語法
redo
重新開始最內(nèi)部循環(huán)的該次迭代,不檢查循環(huán)條件。如果在塊內(nèi)調(diào)用,則重新開始 yield 或 call。
實(shí)例
#!/usr/bin/ruby for i in 0..5 if i < 2 then puts "Value of local variable is #{i}" redo endend
這將產(chǎn)生以下結(jié)果,并會(huì)進(jìn)入一個(gè)無限循環(huán):
Value of local variable is 0Value of local variable is 0............................
Ruby 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ì)重新評(píng)估。
for i in 1..5 retry if some_condition # 重新從 i == 1 開始end
實(shí)例
#!/usr/bin/ruby for i in 1..5 retry if i > 2 puts "Value of local variable is #{i}"end
這將產(chǎn)生以下結(jié)果,并會(huì)進(jìn)入一個(gè)無限循環(huán):
Value of local variable is 1Value of local variable is 2Value of local variable is 1Value of local variable is 2Value of local variable is 1Value of local variable is 2............................
新聞熱點(diǎn)
疑難解答
圖片精選