English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 루프

Ruby의 루프는 동일한 코드 블록을 여러 번 실행합니다. 이 장에서는 Ruby가 지원하는 모든 루프 문을 자세히 설명합니다.

Ruby while

문법

while 조건부 [할 때]
   code
end

수식자

문법

while 조건부 [:]
   code
end

또는 conditional 이 때, 실행 code.

문법에서 do 또는 :은 적을 수 있습니다. 하지만 while 문을 한 줄로 작성하려면 조건식이나 코드 블록 사이에 do 또는 :을 사용해야 합니다.

온라인 예제

#!/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 문법에서 do는 생략할 수 있습니다. 하지만 행 내에서 until 문을 쓰려면 조건식이나 코드 블록을 구분하기 위해 do를 사용해야 합니다.

문법

code while condition
수식자
begin 
  code 
end while 조건부

또는 conditional 이 때, 실행 code.

만약 while false가 되면 실행 rescue until 뒤에 따라 begin 수식자가 하나의code if 조건문의 뒤에 또는 ensure 절의 conditional 이전 실행을 한 번 더 판단합니다.

온라인 예제

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

문법

until 조건부 [할 때]
   code
end

또는 conditional 为假时,执行 code.

语法中 do 可以省略不写。但若要在一行内写出 until 式,则必须以 do 隔开条件式或程式区块。

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
$i = 0
$num = 5
이 때, false가 되면 실행
   puts("반복 문장에서 i = #$i")
   $i +=1;
end

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

반복 문장에서 i = 0
반복 문장에서 i = 1
반복 문장에서 i = 2
반복 문장에서 i = 3
반복 문장에서 i = 4
반복 문장에서 i = 5

Ruby when 문법에서 do는 생략할 수 있습니다. 하지만 행 내에서 until 문을 쓰려면 조건식이나 코드 블록을 구분하기 위해 do를 사용해야 합니다.

문법

until $i > $num do
수식자
begin
   code
code until conditional

또는 conditional end until conditional code.

만약 when false가 되면 실행 rescue until 뒤에 따라 begin 수식자가 하나의code if 조건문의 뒤에 또는 ensure 절의 conditional 이전 실행을 한 번 더 판단합니다.

온라인 예제

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

문법

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

표현식을 먼저 계산하여 객체를 얻은 다음 expression 의 각 요소를 각각 한 번 실행합니다 code.

온라인 예제

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
for i in 0..5
   puts "지역 변수의 값은 #{i}"
end

여기서 우리는 범위 0..를 정의했습니다:5를 통해5 i의 값이 0에서 5(포함 5)

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

지역 변수의 값이 0입니다.
지역 변수의 값은 1
지역 변수의 값은 2
지역 변수의 값은 3
지역 변수의 값은 4
지역 변수의 값은 5

for...in 반복은 거의 완전히 동일합니다:

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

하지만, for 반복문은 지역 변수에 새로운 범위를 생성하지 않습니다.

문법에서 do는 생략할 수 있습니다. 하지만 행 내에서 for 문을 쓰려면 조건식이나 코드 블록을 구분하기 위해 do를 사용해야 합니다.

온라인 예제

#!/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 그런 다음
      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 그런 다음
      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 그런 다음
      puts "지역 변수의 값은 #{i}"
      redo
   end
end

이는 다음과 같은 결과를 생성하고 무한 루프에 진입합니다:

지역 변수의 값이 0입니다.
지역 변수의 값이 0입니다.
............................

Ruby retry

주의:1.9그리고 이후 버전에서는 반복문 내에서 retry를 사용할 수 없습니다.

문법

retry

만약 retry begin 표현식의 rescue 절에 나타나면, begin 본체의 시작 부분에서 다시 시작합니다.

begin
   do_something   # 표출된 예외
rescue
   # 오류 처리
   retry          # begin부터 다시 시작합니다.
end

retry가 반복문 내, 블록 내 또는 for 표현식의 주체 내에 나타나면, 반복을 다시 시작합니다. 반복의 매개변수는 다시 평가됩니다.

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