Object>>caseOf: (was Re: [Q] Enum style Object?)

Hannes Hirzel hannes.hirzel.squeaklist at bluewin.ch
Wed Feb 19 09:54:05 UTC 2003

Niko Schwarz <niko.schwarz at gmx.net> wrote:
> Hash: SHA1
> Am Mittwoch, 19. Februar 2003 08:06 schrieb Hannes Hirzel:
> > Perhaps it is easier to explain if you provide some code
> > or a specific example.
> I understand him like this, at least I myself do it with symbols.
> Here's a snippet out of my jabber code:
> el name caseOf: {
> 		[#stream:stream] -> [self verifyProtocol: el attributes].
> 		[#iq] -> [self channel: #iq add: el].
> 		[#message] -> [self
> 			channel: #message
> 			add: (el asJabberElementForConn: self)].
> 		[#presence] -> [self
> 			channel: #presence
> 			add: (el asJabberElementForConn: self)].
> 		[#stream:error] -> [self channel: #stream:error add: el]}
> 		 otherwise: [self error: el name asString , ' is unknown!']
> Where el is kind of a "state variable". If you feel this is too undocumented, 
> and so did I, you can add a comment to the message explaining the possible 
> values of el. If it is an instance variable, it belongs into the Structure: 
> part of your class comment.
> regards,
> nick

Well the "traditional style" would be to do this with a dictionary of
symbols as keys and blocks as alues. You ask 

(myDict at: #someSymbol) value
(myDict at: #someSymbol) value: anObject

But I'm not sure if this is better than the code snippet above. At least
it is rare style.
I didn't even know that Object>>caseOf: exists!
In my current 'productive' 3.5alpha image there are only three senders
of this method:
two in MessageNode and one in MethodFinder.

Smalltalk teachers and traditionalists out there - what do you think?


More information about the Squeak-dev mailing list