next
next (다음 반복으로)
반복문을 돌다가 현재 반복을 건너뛰고 다음 반복으로 넘어가고 싶을 때가 있어요. while 루프 안에서 next를 쓰면 그 지점에서 현재 반복을 멈추고 다음 반복을 시도해요. 블록(block)에서는 블록을 빠져나가는 용도로도 쓸 수 있어요.
본문
next를 쓰면 while 루프의 다음 반복을 실행하려고 해요. next를 실행한 뒤에는 while의 조건을 다시 검사하고, 그 조건이 _truthy_하면 몸체를 실행해요.
a = 1
while a < 5
a += 1
if a == 3
next
end
puts a
end
# 위 코드는 2, 4, 5를 출력해요
a가 3이 되는 순간 next가 실행되면서 그 아래의 puts a를 건너뛰고 다음 반복으로 가요. 그래서 3만 빠지고 2, 4, 5가 출력돼요.
next는 블록에서 빠져나오는 데에도 쓸 수 있어요.
def block(&)
yield
end
block do
puts "hello"
next
puts "world"
end
# 위 코드는 "hello"를 출력해요
yield로 호출된 블록 안에서 next를 만나면 블록의 실행이 그 지점에서 끝나요. 그래서 puts "world"는 실행되지 않죠.
break와 비슷하게, next도 인자를 받을 수 있는데 이 값은 yield가 반환하게 돼요.
def block(&)
puts yield
end
block do
next "hello"
end
# 위 코드는 "hello"를 출력해요
여기서는 블록 안의 next "hello" 값이 yield의 반환값이 되어 puts yield로 출력되는 거예요.