다음과 같이하고 싶다면 :
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
.
break value
나를 위해 일하지 않았지만 잘 작동 next value
했습니다. 감사합니다.
next
이며 break
루핑 구조에만 국한되지 않으므로 링크 한 기사는 매우 오해의 소지가 있습니다 (반대를 크게 암시하기 때문에). 그리고 내 설명은 확실히 할 때 정확 next
하고 break
블록 내에서 사용되는 (주 그 while
와 for
이제까지의 사용의 99 % 있도록 루비에 사용되는 경우는 거의 없습니다 next
및 break
블록 내에있는).
이 경우 break를 사용하여 루프를 일찍 종료 할 수 있습니다.
collection.each do |i|
break if i == 3
...many lines
end
... 물론, 이것은 당신이 실제로 값을 반환하려고하는 것이 아니라 단지 블록을 벗어나는 것을 가정하는 것입니다.
break
루비를 - break 5
의 원인이됩니다 each
5. 반환
next value
및에 대한 +1break value
. 내가 찾던 바로 그것.