On Mon, 15 Mar 2010, nullPointer 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).
].
].
].
].
You can save 2-3 lines/branch if you format your code with a better style:
foo
ifTrue: [ ... ]
ifFalse: [
bar
ifTrue: [ ... ]
ifFalse: [
baz
... ] ]
If you make this branch a separate method you can use returns making it
even simpler:
foo ifTrue: [ ^... ]
bar ifTrue: [ ^... ]
baz ifTrue: [ ^... ]
...
And there's #caseOf:otherwise: for a case-like pseudostatemet. Note that
this is inlined by the compiler.
foobar
caseOf: {
[ ... ] -> [ ... ].
[ ... ] -> [ ... ].
... }
otherwise: [ ... ]
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> ......... ???
#and: and #or: is short-circuit (lazy) by default.
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?
Soon I'll start collecting credits for promoting this book:
http://stephane.ducasse.free.fr/FreeBooks/WithStyle/SmalltalkWithStyle.pdf
:)
Levente
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