7.8. Zatrzymywanie iteracji
Problem
Chcemy przerwać trwającą iterację z poziomu bloku kodowego.
Rozwiązanie
W najprostszym przypadku sprowadza się to do wykonania instrukcji break
w treści bloku kodowego. Powoduje ona wyskok z najbardziej zagnieżdżonej pętli zdefiniowanej w metodzie sterującej blokiem kodowym:
1.upto(10) do |x| puts x break if x == 3 end # 1 # 2 # 3
Dyskusja
Instrukcja break
jest mechanizmem bardzo prostym, lecz jej używanie podlega pewnym ograniczeniom. Nie wolno jej używać w treści bloku, dla którego utworzono obiekt Proc
za pomocą konstruktora Proc.new
lub (w wersji 1.9 języka Ruby) metody Kernel#proc
. Jeżeli stanowi to problem, należy zamiast tych metod użyć metody lambda
.
aBlock = Proc.new do |x| puts x ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.