+ 1

On Mar 15, 2010, at 11:26 PM, Michael Roberts wrote:

> I would try and reduce the number of branches first. you can use guard
> conditions to exit early.
> 
> This is not necessarily exact below, but you hopefully get the idea...
> 
> (self currentRow == sortedRows last and: [self currentCell isNil])
>       ifTrue: [^self navigationKey: event]
> 
> self currentRow ifNil: [^self].
> 
> self currentCell ifNil:
>       [^self setCurrentRowToNext]
> 
> self setCurrentCellToNext.
> 
> self currentCell ifNil: [^self].
>       
> self currentCell performKeyFocus: event inCellBounds:
>       (self pvtGetCellBounds: self currentCell)
> 
> 
> A different approach entirely is to have an object(s) that represents
> the nil state for the row and cell. That way you are not checking
> constantly for it being nil, and perhaps you can dispatch some
> behaviour to it.
> 
> cheers,
> Mike
> 
> On Mon, Mar 15, 2010 at 9:49 PM, nullPointer <[email protected]> wrote:
>> 
>> Well, perhaps is a theme worked in another times but... is possible for Pharo
>> have a basic Case or elseIf statement? I know is easy create you own
>> structure control, but not is more useful have a "standard" for everybody?
>> I´m tired of write code like that...
>> 
>>                        (self currentRow == sortedRows last and: [ self
>> currentCell isNil ]) ifTrue:
>>                        [
>>                                self navigationKey: event
>>                        ]
>>                        ifFalse:
>>                        [
>>                                (self currentRow notNil and: [ self 
>> currentCell isNil ]) ifTrue:
>>                                [
>>                                        self setCurrentRowToNext.
>>                                ]
>>                                ifFalse:
>>                                [
>>                                        (self currentRow notNil and: [ self 
>> currentCell notNil ]) ifTrue:
>>                                        [
>>                                                self setCurrentCellToNext.
>> 
>>                                                self currentCell notNil 
>> ifTrue:
>>                                                [
>>                                                        self currentCell 
>> performKeyFocus: event inCellBounds: (self
>> pvtGetCellBounds: self currentCell).
>>                                                ].
>>                                        ].
>>                                ].
>>                        ].
>> 
>> 
>> Write code with that format is pathetical :(
>> 
>> Is valid too have a "and" and "or" lazy? Exists a not lazy with #& and #|  ,
>> but could exists an #&& and #||  . Is more easy...
>> 
>>      value1 == value2 and:[ <condition> ] and: [<condition>] ......
>> 
>> or
>> 
>>     value1 == value2 && <condition> && <condition> ......... ???
>> 
>> Well, perhaps is a stupid question but I miss a more complete way for write
>> code. If in Smalltalk is possible do easy that and include it in "core" why
>> not do it?
>> 
>> Is a reasonable desire :)
>> 
>> Regards
>> 
>> 
>> 
>> 
>> 
>> 
>> --
>> View this message in context: 
>> http://n4.nabble.com/Case-statement-and-lazy-comparison-in-Pharo-tp1594080p1594080.html
>> Sent from the Pharo Smalltalk mailing list archive at Nabble.com.
>> 
>> _______________________________________________
>> Pharo-project mailing list
>> [email protected]
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
> 
> _______________________________________________
> Pharo-project mailing list
> [email protected]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to