[Newbies] subclasses detect

Steve Wessels swessels1955 at yahoo.com
Tue Jul 31 21:54:45 UTC 2007


David's message is excellent.  The idiom used by this method is useful to understand.  I actually make a point of describing it's role as a substitution for a Case statement in a section just a few pages later in the Tutorial.  Check out page 048A.html 

- Steve

Sent from my iPhone

On Jul 31, 2007, at 4:00 PM, gruntfuttuck <gruntfuttuck at gmail.com> wrote:


Thank you, that was very clear and helpful :-)


David Mitchell-10 wrote:

The message #subclasses returns a collection of Class objects
The message #detect: returns the first object in that collection that
matches the criteria in the block

Since detect is the last message sent before the return, one class
object will be returned.

If more than one matches, the code will never know, since detect:
returns on the first match. It won't evaluate to find the other match.
That is, it short circuits the iteration.

If you want to return a collection of matches, send the #select:
message instead of #detect:.

Nothing to do with class instance variables (those are rare birds --
misused as often as they are needed).

Also realize that the message isn't "subclasses detect". They are two
separate messages. #detect: works with any collection. #subclasses
returns a collection.




On 7/31/07, gruntfuttuck <gruntfuttuck at gmail.com> wrote:

Hello

In the laser game tutorial by Stephan B Wessels I was intrerested by this
code:

directionFor: aSymbol
       ^ self subclasses
               detect: [:cls | cls directionSymbol = aSymbol]

The code appears here at the bottom of the page:
http://squeak.preeminent.org/tut2007/html/038.html

What I read this code as doing, in this example is: return an symbol
object
which is a sublass instance varable, if it is the same as aSymbol.

What would happen if more than one subclass object had a match?

Also how else can subclasses detect: be used? It looks very interesting.

Grunt


--
View this message in context:
http://www.nabble.com/subclasses-detect-tf4196202.html#a11934239
Sent from the Squeak - Beginners mailing list archive at Nabble.com.

_______________________________________________
Beginners mailing list
Beginners at lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

_______________________________________________
Beginners mailing list
Beginners at lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners



-- 
View this message in context: http://www.nabble.com/subclasses-detect-tf4196202.html#a11935026
Sent from the Squeak - Beginners mailing list archive at Nabble.com.

_______________________________________________
Beginners mailing list
Beginners at lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners



       
____________________________________________________________________________________
Boardwalk for $500? In 2007? Ha! Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow  


More information about the Beginners mailing list