다음과 같이하고 싶다면 :
collection.each do |i|
return nil if i == 3
..many lines of code here..
end
그 효과를 어떻게 얻을 수 있습니까? 큰 if 문으로 블록 내부의 모든 것을 래핑 할 수 있다는 것을 알고 있지만 가능하면 중첩을 피하고 싶습니다.
나머지 요소의 반복을 중지하고 싶지 않기 때문에 Break는 여기서 작동하지 않습니다 .
답변
next
블록 내부는 블록에서 반환됩니다. break
블록 내부는 블록에 양보 한 함수에서 반환됩니다. 대한 each
이 수단 break
루프를 종료하고 next
루프 (따라서 이름)의 다음 반복으로 이동합니다. next value
및 로 값을 반환 할 수 있습니다 break value
.
답변
#!/usr/bin/ruby
collection = [1, 2, 3, 4, 5 ]
stopped_at = collection.each do |i|
break i if i == 3
puts "Processed #{i}"
end
puts "Stopped at and did not process #{stopped_at}"
답변
이 경우 break를 사용하여 루프를 일찍 종료 할 수 있습니다.
collection.each do |i|
break if i == 3
...many lines
end
… 물론, 이것은 당신이 실제로 값을 반환하려고하는 것이 아니라 단지 블록을 벗어나는 것을 가정하는 것입니다.