Ruby 迴圈
Ruby 中的迴圈用於執行相同的代碼塊若干次。本章節將詳細介紹 Ruby 支持的所有迴圈語句。
Ruby while 語句
語法
或者
語法
當 conditional 為真時,執行 code。
語法中 do 或 : 可以省略不寫。但若要在一行內寫出 while 式,則必須以 do 或 : 隔開條件式或程式區塊。
實例
以上實例輸出結果為:
在迴圈語句中 i = 0 在迴圈語句中 i = 1 在迴圈語句中 i = 2 在迴圈語句中 i = 3 在迴圈語句中 i = 4
Ruby while 修飾符
語法
當 conditional 為真時,執行 code。
如果 while 修飾符跟在一個沒有 rescue 或 ensure 子句的 begin 語句後面,code 會在 conditional 判斷之前執行一次。
實例
以上實例輸出結果為:
在迴圈語句中 i = 0 在迴圈語句中 i = 1 在迴圈語句中 i = 2 在迴圈語句中 i = 3 在迴圈語句中 i = 4
Ruby until 語句
語法
當 conditional 為假時,執行 code。
語法中 do 可以省略不寫。但若要在一行內寫出 until 式,則必須以 do 隔開條件式或程式區塊。
實例
以上實例輸出結果為:
在迴圈語句中 i = 0 在迴圈語句中 i = 1 在迴圈語句中 i = 2 在迴圈語句中 i = 3 在迴圈語句中 i = 4 在迴圈語句中 i = 5
Ruby until 修飾符
語法
當 conditional 為 false 時,執行 code。
如果 until 修飾符跟在一個沒有 rescue 或 ensure 子句的 begin 語句後面,code 會在 conditional 判斷之前執行一次。
實例
以上實例輸出結果為:
在迴圈語句中 i = 0 在迴圈語句中 i = 1 在迴圈語句中 i = 2 在迴圈語句中 i = 3 在迴圈語句中 i = 4 在迴圈語句中 i = 5
Ruby for 語句
語法
先計算運算式得到一個對象,然後針對 expression 中的每個元素分別執行一次 code。
實例
在這裏,我們已經定義了範圍 0..5。語句 for i in 0..5 允許 i 的值從 0 到 5(包含 5)。
以上實例輸出結果為:
局部變數的值為 0 局部變數的值為 1 局部變數的值為 2 局部變數的值為 3 局部變數的值為 4 局部變數的值為 5
for...in 迴圈幾乎是完全等價於:
但是,for 迴圈不會為局部變數創建一個新的作用域。
語法中 do 可以省略不寫。但若要在一行內寫出 for 式,則必須以 do 隔開條件式或程式區塊。
實例
以上實例輸出結果為:
局部變數的值為 0 局部變數的值為 1 局部變數的值為 2 局部變數的值為 3 局部變數的值為 4 局部變數的值為 5
Ruby break 語句
語法
終止最內部的迴圈。如果在塊內調用,則終止相關塊的方法(方法返回 nil)。
實例
以上實例輸出結果為:
局部變數的值為 0 局部變數的值為 1 局部變數的值為 2
Ruby next 語句
語法
跳到迴圈的下一個迭代。如果在塊內調用,則終止塊的執行(yield 運算式返回 nil)。
實例
以上實例輸出結果為:
局部變數的值為 2 局部變數的值為 3 局部變數的值為 4 局部變數的值為 5
Ruby redo 語句
語法
重新開始最內部迴圈的該次迭代,不檢查迴圈條件。如果在塊內調用,則重新開始 yield 或 call。
實例
這將產生以下結果,並會進入一個無限迴圈:
局部變數的值為 0 局部變數的值為 0 ............................
Ruby retry 語句
注意:1.9以及之後的版本不支持在迴圈中使用retry。
語法
如果 retry 出現在 begin 運算式的 rescue 子句中,則從 begin 主體的開頭重新開始。
如果 retry 出現在迭代內、塊內或者 for 運算式的主體內,則重新開始迭代調用。迭代的參數會重新評估。
實例
這將產生以下結果,並會進入一個無限迴圈:
局部變數的值為 1 局部變數的值為 2 局部變數的值為 1 局部變數的值為 2 局部變數的值為 1 局部變數的值為 2 ............................