반응형
블록에서 일찍 무언가를 반환하려면 어떻게해야합니까?
다음과 같이하고 싶다면 :
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
... 물론, 이것은 당신이 실제로 값을 반환하려고하는 것이 아니라 단지 블록을 벗어나는 것을 가정하는 것입니다.
참고 URL : https://stackoverflow.com/questions/2518075/how-can-i-return-something-early-from-a-block
반응형
'Program Tip' 카테고리의 다른 글
Xcode에서 드래그 할 수 없습니다 (코드 조각을 만들기 위해) (0) | 2020.10.09 |
---|---|
ICollectionView 또는 ObservableCollection에 바인딩해야합니까? (0) | 2020.10.09 |
JRuby 1.6을 Ruby 1.9로 기본 설정하는 방법은 무엇입니까? (0) | 2020.10.09 |
페이지로드 사이에 변수 유지 (0) | 2020.10.09 |
열거 형의 JPA 맵 컬렉션 (0) | 2020.10.09 |