Hi Joseph,

On 09.05.2016, at 19:51, Joseph Alotta <[email protected]> wrote:

> Greetings,
> 
> I am in need of a way to go to the end of a do loop.
> 
> myCollection do:  [ :item |
> 
>                (blah blah) ifTrue: “we found an item of the first type”
>                 next item.
> 
>                (blah blah) ifTrue: “we found an item of the second type”
>                 next item.
> 
>                (blah blah) ifTrue: “we found an item of the third type”
>                next item.
> 
>                (blah blah) ifTrue: “we found an item of the fourth type”
>                next item.
> 
>                (blah blah) ifTrue: “we found an item of the fifth type”
> 
> ].

Can you go a little into detail?
Typically, I'd put whatever is to be done when you "know of what type" your 
items are into its Class, 
relying on polymorphism.

For example, given you have ducks, cats, and dogs and want them to call, you'd 
do:

Dog>>call
  self sound: 'Waff Waff'.

Cat>>call
  self sound: 'Meow'.

Duck>>call
  self sound: 'Quak!'.


So you can use it like this:

{Dog new. Cat new. Dog new. Duck new. Duck new} do: [:animal |
  animal call].
"=> 'Waff Waff', 'Meow', 'Waff Waff', 'Quak!', 'Quak!'

What happens when you have a Centipede that does not call at all?

Well, let's assume the animals are organized all together in a common super 
class, Animal.

In Animal, we say

Animal>>call
  ^ self

to say a 'generic' animal does not do anything when calling.
We could do

Centipede>>call
  ^ self

or 

Centipede>>call
  ^ super call

but that superfluous given Animal>>call.

So, what do we have now?

{Dog new. Cat new. Centipede new. Dog new. Duck new. Centipede new. Duck new} 
do: [:animal |
  animal call].
"=> 'Waff Waff', 'Meow', 'Waff Waff', 'Quak!', 'Quak!'


That way, no 'goto' or 'continue' is necessary.

Best regards
        -Tobias



_______________________________________________
Beginners mailing list
[email protected]
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to