English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby의 루프는 동일한 코드 블록을 여러 번 실행합니다. 이 장에서는 Ruby가 지원하는 모든 루프 문을 자세히 설명합니다.
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
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
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
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
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
break
가장 내부의 반복문을 종료합니다. 블록 내에서 호출되면 관련 블록의 메서드를 종료합니다(메서드가 nil을 반환합니다).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 그런 다음 break end puts "지역 변수의 값은 #{i}" end
위의 예제 출력 결과는 다음과 같습니다:
지역 변수의 값이 0입니다. 지역 변수의 값은 1 지역 변수의 값은 2
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
redo
가장 내부의 반복문의 이번 반복을 다시 시작합니다. 반복 조건을 확인하지 않습니다. 블록 내에서 호출되면 다시 시작됩니다. yield 또는 call.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 그런 다음 puts "지역 변수의 값은 #{i}" redo end end
이는 다음과 같은 결과를 생성하고 무한 루프에 진입합니다:
지역 변수의 값이 0입니다. 지역 변수의 값이 0입니다. ............................
주의: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 ............................