SelectCase

tim Rowledge tim at rowledge.org
Wed Jan 4 19:55:08 UTC 2006


On 4-Jan-06, at 11:43 AM, Ramon Leon wrote:

> How about...
>
> (Dictionary new)
>     at: $c put: [self copy];
>     at: $x put: [self cut];
>     at: $v put: [self paste];
>     at: keyPressed ifAbsent:[].
Much more flexible to build a dictionary somewhere else  - class  
method perhaps - that is manipulable by some config tool. And  
sharable with other user methods. Then the 'doForKeyPress:' would be  
simply
doForKeyPress: keyPressObject
   (self class keypressActions at: keyPressObject key ifAbsent:["do  
nothing but at least do it quickly"]) value

Sure this is a bit UI/keymap specific as an example but it's a common  
case where some body thinks a case statement is a good idea. They're  
not; I think I'd even claim they're never a good idea in Smalltalk.  
The really bad part is that they encode in the method everything you  
can do and allow for no expansion of customization - just another  
slave to the discredited early binding mentality that we should  
eschew at every (late) opportunity.

tim
--
tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
Strange OpCodes: BBL: Branch on Burned out Light





More information about the Squeak-dev mailing list