Rubyループ
Ruby のループは、同じコード ブロックを複数回実行するために使用されます。この章では、Ruby でサポートされるすべてのループ ステートメントについて詳しく説明します。
Ruby while ステートメント
構文
while conditional [do] code end
または
<pre> while conditional [:] code end
は、conditional が true の場合に code を実行します。
文法ではdoや:は省略可能です。ただし、while 式を 1 行で記述したい場合は、条件式またはプログラム ブロックを do または : で区切る必要があります。
Example
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num do puts("在循环语句中 i = #$i" ) $i +=1 end
上記の例の出力結果は次のとおりです:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4
Ruby while 修飾子
構文
code while condition 或者 begin code end while conditional
conditionalがtrueの場合、codeを実行します。
while修飾子がrescueまたはsure句のないbeginステートメントの後に続く場合、codeはconditionalの評価の前に1回実行されます。
Example#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
$i = 0
$num = 5
begin
puts("在循环语句中 i = #$i" )
$i +=1
end while $i < $num
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4Ruby
untilステートメント until conditional [do]
code
end
conditionalがfalseの場合、codeを実行します。
文法上、doは省略できます。ただし、until 式を 1 行で記述したい場合は、条件式またはプログラム ブロックを do で区切る必要があります。 Example#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
$i = 0
$num = 5
until $i > $num do
puts("在循环语句中 i = #$i" )
$i +=1;
end
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4 在循环语句中 i = 5Ruby
until 修飾子
構文code until conditional
或者
begin
code
end until conditional
conditionalがfalseの場合、codeを実行します。
until修飾子が rescue または ensure 句のない begin ステートメントの後に続く場合、code は conditional の評価の前に 1 回実行されます。 例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("在循环语句中 i = #$i" ) $i +=1; end until $i > $num
上記の例の出力結果は次のとおりです:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4 在循环语句中 i = 5
Ruby
forStatementSyntax
for variable [, variable ...] in expression [do] code end
まずオブジェクトを取得するための式を計算し、次にそれを要素ごとに1回実行します。
式コード。 例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "局部变量的值为 #{i}" end
ここでは範囲 0..5 を定義しました。 for i in 0..5 のステートメントでは、0 から 5 までの i の値を許可します。
上記の例の出力結果は次のとおりです:
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5for...in
このループは、次とほぼ完全に同等です: (expression).each do |variable[, variable...]| code end
ただし、for ループはローカル変数の新しいスコープを作成しません。
文法上、doは省略できます。ただし、for 式を 1 行で記述したい場合は、条件式またはプログラム ブロックを do で区切る必要があります。
Instance
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "局部变量的值为 #{i}" end
上記の例の出力結果は次のとおりです。
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5
Ruby
breakステートメント 構文
break
最も内側のループを終了します。ブロック内で呼び出された場合は、関連するブロックのメソッドを終了します (メソッドは nil を返します)。
インスタンス
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "局部变量的值为 #{i}" end
上記の例の出力結果は次のとおりです:
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2
Ruby
nextステートメント 構文
next
ループの次の反復にジャンプします。ブロック内で呼び出された場合、ブロックの実行を終了します (
yield式は nil を返します)。 例
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "局部变量的值为 #{i}" end
上記の例の出力結果は次のとおりです:
局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5
Ruby redo ステートメント
構文
redo
ループ条件をチェックせずに、最も内側のループのこの繰り返しを再開します。ブロック内で呼び出された場合は、yield または call を再起動します。
インスタンス
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "局部变量的值为 #{i}" redo end end
これにより、次の結果が生成され、無限ループに入ります:
局部变量的值为 0 局部变量的值为 0 ............................
Ruby retry ステートメント
注: 1.9 以降のバージョンは、ループ内での retry の使用をサポートしていません。
構文
retry
begin式のrescue句にretryが現れた場合、begin本体の先頭から再開します。
begin do_something # 抛出的异常 rescue # 处理错误 retry # 重新从 begin 开始 end
反復内、ブロック内、または for 式の本体内に retry が表示された場合は、反復呼び出しを再開します。反復パラメータが再評価されます。
for i in 1..5 retry if some_condition # 重新从 i == 1 开始 end
インスタンス
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "局部变量的值为 #{i}" end
これにより、次の結果が生成され、無限ループに入ります:
局部变量的值为 1 局部变量的值为 2 局部变量的值为 1 局部变量的值为 2 局部变量的值为 1 局部变量的值为 2 ............................