Collection.st
changeset 24397 f8bd0c337564
parent 24385 dd84e4dfb5cc
child 24510 e309e5fdf190
equal deleted inserted replaced
24396:3dfb65acb1f0 24397:f8bd0c337564
  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