[Squeak-ev] [Newbie] loop-Konstrukt
Bert Freudenberg
bert at impara.de
Mit Nov 16 00:06:44 UTC 2005
Am 15.11.2005 um 23:49 schrieb Enrico Schwass:
> Vermutlich ist oben mein Pseudo-Code falsch verstaendlich. In Ruby
> sehe
> das so aus
>
> counter = 0
> loop do
> counter = counter.succ
> char = STDIN.getc
> break if char == 10
> break if counter > 255
> # ....
> end
>
> loop ist in Ruby eine Endlosschleife.
Wie du schon vermutetest, würde man das üblicherweise mit #while...
erledigen:
counter := 0.
[
counter := counter + 1.
char := stream next.
char isNil or: [char asInteger = 10 or: [counter > 255]]
] whileFalse.
Es gibt auch #repeat als Endlosschleife, sieht man aber eher selten,
und wird dann üblicherweise mit nicht-lokalen Returns kombiniert:
counter := 0.
[
counter := counter + 1.
char := stream next.
char ifNil: [^self].
char asInteger = 10 ifTrue: [^self].
counter > 255 ifTrue: [^self].
] repeat.
Da dann nach der Schleife natürlich nichts mehr folgen kann, macht
man daraus eine eigene Methode. Was anerkanntermaßen sowieso meist
eine gute Idee ist ;-)
- Bert -