[squeak-dev] Re: sane defaults and doesNotUnderstand: (was Future blah blah blah)

Klaus D. Witzel klaus.witzel at cobss.com
Tue Jun 30 21:05:54 UTC 2009


On Tue, 30 Jun 2009 18:24:21 +0200, David Goehrig wrote:

> On Tue, Jun 30, 2009 at 11:28 AM, Klaus D. Witzel wrote:
>>
>> You just want this? result = (anObject.methodName ? methodName() :  
>> false)
>>
>> ?
>
>
> Not quite.. if you were attempting to write it in javascript it would  
> look more like:
>
... understood ...
>
> where currentContext would be an internal variable denoting the desired  
> type / class / or traits of the result.

Can you put a method #defaultValue to the class side of String, Number,  
etc, similiar to #defaultElement that is already in the collection  
hierarchy. Then, assuming you have the below in control of  
#doesNotUnderstand:, messages like

	x zork

would return (thisContext client class defaultValue). But your  
currentContext, that's not easy to find out, even if you know what  
thisContext client is.

>  The idea is that the defaultHandler of doesNotUnderstand would
> produce a reasonable
> approximation of a result based on the semantics and context in which
> the call appears.
>
> Here's the specific use case that I've been fighting with
...

You can make your own defaultHandler of #doesNotUnderstand:, like this,  
during your computation:

  [myObject myComputation]
   on: MessageNotUnderstood
   do: [:ex | ex return: ex receiver class defaultValue]

So ('' zork) will return ('' class defaultValue),
and (123 zork) will return (123 class defaultValue), etc.

?

/Klaus




More information about the Squeak-dev mailing list