[Newbies] subclasses detect
gruntfuttuck at gmail.com
Tue Jul 31 21:00:27 UTC 2007
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:
>> In the laser game tutorial by Stephan B Wessels I was intrerested by this
>> directionFor: aSymbol
>> ^ self subclasses
>> detect: [:cls | cls directionSymbol = aSymbol]
>> The code appears here at the bottom of the page:
>> What I read this code as doing, in this example is: return an symbol
>> 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.
>> View this message in context:
>> Sent from the Squeak - Beginners mailing list archive at Nabble.com.
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
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.
More information about the Beginners