루비 루프


Ruby의 루프는 동일한 코드 블록을 여러 번 실행하는 데 사용됩니다. 이 장에서는 Ruby에서 지원하는 모든 루프 문에 대해 자세히 소개합니다.

Ruby while

구문

while conditional [do]
   code
end

또는

<pre>
while conditional [:]
   code
end

conditional이 true인 경우 code를 실행합니다.

문법에서 do나 :는 생략 가능합니다. 그러나 while 표현식을 한 줄에 작성하려면 조건식이나 프로그램 블록을 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 Modifier

Syntax

code while condition

或者

begin 
  code 
end while conditional

conditional이 true인 경우 code를 실행합니다.

while 수정자가 rescue 또는 verify 절 없이 begin 문 다음에 오면 code조건부 평가 전에 한 번 실행됩니다.

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 수식을 한 줄에 작성하려면 조건식이나 프로그램 블록을 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 Modifier

Syntax

code until conditional

或者

begin
   code
end until conditional

conditional이 false인 경우 code를 실행합니다.

until 수정자가 rescue 또는 verify 절 없이 begin 문 뒤에 오면 code조건부 평가 전에 한 번 실행됩니다.

Example

#!/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 forStatement

Syntax

for variable [, variable ...] in expression [do]
   code
end

먼저 표현식을 계산하여 객체를 얻은 다음, 각 요소에 대해 한 번씩 실행합니다. 표현 코드.

Example

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   puts "局部变量的值为 #{i}"
end

여기서는 0..5 범위를 정의했습니다. 0..5의 i에 대한 설명은 0에서 5까지의 i 값을 허용합니다.


위 예제의 출력 결과는 다음과 같습니다.

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

for...in 루프는 거의 완전히 다음과 동일합니다.

(expression).each do |variable[, variable...]| code end

그러나 for 루프는 지역 변수에 대한 새 범위를 생성하지 않습니다.

문법에서 do는 생략 가능합니다. 하지만 for 수식을 한 줄에 작성하려면 조건식이나 프로그램 블록을 do로 구분해야 합니다.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end


위 예제의 출력 결과는 다음과 같습니다.

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby break

Syntax

break

가장 안쪽 루프를 종료합니다. 블록 내에서 호출되면 해당 블록의 메소드를 종료합니다. (메소드는 nil을 반환합니다.)

Instance

#!/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

Syntax

next

루프의 다음 반복으로 이동합니다. 블록 내에서 호출되면 블록 실행을 종료합니다(yield 표현식은 nil을 반환함).

Example

#!/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 명령문

Syntax

redo

루프 조건을 확인하지 않고 가장 안쪽 루프의 반복을 다시 시작합니다. 블록 내에서 호출되면 yield 또는 call을 다시 시작하세요.

Instance

#!/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 이상 버전은 루프에서 재시도 사용을 지원하지 않습니다.

Syntax

retry

retry가 시작 표현식의 복구 절에 나타나면 시작 본문의 처음부터 다시 시작하세요.

begin
   do_something   # 抛出的异常
rescue
   # 处理错误
   retry          # 重新从 begin 开始
end

반복, 블록 또는 for 표현식 본문 내에 재시도가 나타나면 반복 호출을 다시 시작하세요. 반복 매개변수가 재평가됩니다.

for i in 1..5
   retry if some_condition # 重新从 i == 1 开始
end

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

이 결과는 다음과 같으며 무한 루프에 들어갑니다.

局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
............................