Thread Precedences und Schönheit
(21 answers)
Opened by RalphFFM at 2018-03-31 14:27
Gewollt ist eine Integer-Zählervariable $i die von 1 bis 5 läuft, und nach 5 wieder bei 1 anfängt.
Erster Gedanke: Code: (dl
)
$i = $i < 5 ? $i++ : 1; Aber oje: Ok, stimmt ja, das ++ wird ja erst später ausgeführt. Andererseits insofern etwas seltsam, dass das ++ hier im Ergebnis ohne Wirkung bleibt. Anderer Gedanke: Code: (dl
)
$i < 5 ? $i++ : $i=1; Aber, schön wärs gewesen: Code: (dl
)
1 perl -e '$i=1; $i < 5 ? $i++ : $i=1; print "$i\n";' Ok, stimmt ja, Perl hält sich rigoros an die Precedences und versucht dann dem ganzen Teil links den Wert 1 zuzuweisen. So wars natürlich nicht gemeint. Was funktioniert ist: Code: (dl
)
$i = $i < 5 ? ++$i : 1; Das aber sieht mit dem Inkrementieren von $i für mich optisch irgendwie "doppelt" aus. Da wird $i gefühlt zweimal geändert. Einmal mittels ++, und einmal durch die Zuweisung (=). Hmmm. Klar funktioniert, aber ist das schön? Hat wer noch mehr Ideen wie man das kurz und schön ausdrücken kann? |