[vienna.pm] Conditional Operator ?
Peter J. Holzer
hjp at wsr.ac.at
Wed Mar 13 06:06:41 CST 2002
On 2002-03-13 12:02:21 +0100, Baier Oliver INT SD wrote:
> Um wegen einer kleinen Entscheidung nicht gleich ein ganzes
> if-then-else Konstrukt zu basteln, habe ich mich fuer die
> Verwendung des wesentlich kuerzeren Conditional parameters
> entschieden.
>
> Nur leider scheine ich bei dieser Funktion irgendwie auf
> der Leitung zu stehen.
>
> ------- kurzes Script -------
> #!/usr/local/bin/perl -w
>
> $value = "100:10";
>
> ($value) = split /:/, $value;
> print "$value => ";
> $value > 20 ? $value = "groesser" : $value = "kleiner";
> print "$value\n";
> -----------------------------
>
> ----- Output des Scripts ----
> 100 => kleiner
> -----------------------------
>
> Warum entscheidet es sich fuer "kleiner",
> wenn 100 doch eindeutig groesser als 20 ist?
perldoc perlop:
right ?:
right = += -= *= etc.
?: bindet also stärker als =, daher ist das, was Du geschrieben hast,
äquivalent zu:
($value > 20 ? $value = "groesser" : $value) = "kleiner";
Wenn also $value > als 20 ist, bekommt $value den Wert größer, sonst
passiert nichts, der Wert des Klammerausdrucks ist aber auf jeden Fall
der L-Value $value. Man kann den Ausdruck also zu
$value = "kleiner";
vereinfachen.
Du hättest schreiben müssen:
$value > 20 ? $value = "groesser" : ($value = "kleiner");
Da `$value = ' in beiden Hälften das Ausdrucks vorkommt, kann man es
herausziehen (immer gut, wenn man algebraische Umformungen, die man
schon in der Volksschule gelernt hat, auch in Programmiersprachen
anwenden kann :-) und den Ausdruck zu
$value = $value > 20 ? "groesser" : "kleiner";
umformen. Das ist die Form, die man meistens verwendet.
hp
--
_ | Peter J. Holzer | My definition of a stupid question is
|_|_) | Sysadmin WSR / LUGA | "a question that if you're embarassed to
| | | hjp at wsr.ac.at | ask it, you stay stupid."
__/ | http://www.hjp.at/ | -- Tim Helck on dbi-users, 2001-07-30
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 431 bytes
Desc: not available
Url : http://mail.pm.org/archives/vienna-pm/attachments/20020313/a919e854/attachment.bin
More information about the Vienna-pm
mailing list