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ステートメントの後に続く場合、codeconditionalの評価の前に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 = 4

Ruby

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 = 5

Ruby

until 修飾子

構文

code until conditional

或者

begin
   code
end until conditional

conditional

がfalseの場合、codeを実行します。

until

修飾子が rescue または ensure 句のない begin ステートメントの後に続く場合、codeconditional の評価の前に 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

for

StatementSyntax

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
局部变量的值为 5

for...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
............................