3339 lastElement := element. |
3339 lastElement := element. |
3340 element < 99 |
3340 element < 99 |
3341 ]. |
3341 ]. |
3342 lastElement |
3342 lastElement |
3343 " |
3343 " |
|
3344 ! |
|
3345 |
|
3346 doWithBreak:aBlock |
|
3347 "evaluate the argument, aBlock for each element. |
|
3348 Passes an additional exit object, which can be used to leave |
|
3349 the loop early, by sending it a #value message. |
|
3350 |
|
3351 Notice, that this is different to a return statement in the block, |
|
3352 which returns from the enclosed method, NOT only from the block." |
|
3353 |
|
3354 |exit| |
|
3355 |
|
3356 exit := [^nil]. |
|
3357 |
|
3358 self do:[:el | |
|
3359 aBlock value:el value:exit |
|
3360 ]. |
|
3361 |
|
3362 "Example: |
|
3363 search for the first element which is >= 99; return it. |
|
3364 remaining elements are not processed: |
|
3365 |
|
3366 #(1 2 3 4 999 5 6 7 8 9) |
|
3367 doWithBreak:[:element :break | |
|
3368 Transcript showCR:element. |
|
3369 element >= 99 ifTrue:[break value]] |
|
3370 |
|
3371 #(1 2 3 4 5 6 7 8 9) |
|
3372 doWithBreak:[:element :break | |
|
3373 Transcript showCR:element. |
|
3374 element >= 99 ifTrue:[break value]] |
|
3375 " |
|
3376 |
|
3377 "Created: / 28-06-2019 / 12:48:59 / Claus Gittinger" |
3344 ! |
3378 ! |
3345 |
3379 |
3346 doWithExit:aBlock |
3380 doWithExit:aBlock |
3347 "evaluate the argument, aBlock for each element. |
3381 "evaluate the argument, aBlock for each element. |
3348 Passes an additional exit object, which can be used to leave |
3382 Passes an additional exit object, which can be used to leave |