Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: "x ? y : z" notation

by Ish (Acolyte)
on Mar 26, 2009 at 00:45 UTC ( #753307=note: print w/ replies, xml ) Need Help??


in reply to "x ? y : z" notation

From the ActiveState documentation of perlop

Conditional Operator Ternary "?:" is the conditional operator, just as in C. It works much +like an if-then-else. If the argument before the ? is true, the argum +ent before the : is returned, otherwise the argument after the : is r +eturned. For example: printf "I have %d dog%s.\n", $n, ($n == 1) ? '' : "s"; Scalar or list context propagates downward into the 2nd or 3rd argumen +t, whichever is selected. $a = $ok ? $b : $c; # get a scalar @a = $ok ? @b : @c; # get an array $a = $ok ? @b : @c; # oops, that's just a count! The operator may be assigned to if both the 2nd and 3rd arguments are +legal lvalues (meaning that you can assign to them): ($a_or_b ? $a : $b) = $c; Because this operator produces an assignable result, using assignments + without parentheses will get you in trouble. For example, this: $a % 2 ? $a += 10 : $a += 2 Really means this: (($a % 2) ? ($a += 10) : $a) += 2 Rather than this: ($a % 2) ? ($a += 10) : ($a += 2) That should probably be written more simply as: $a += ($a % 2) ? 10 : 2;
I find it very useful in some of the 'log' wrappers I have written.


Comment on Re: "x ? y : z" notation
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://753307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (19)
As of 2015-07-07 19:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls