in reply to Re: "x ? y : z" notation
in thread "x ? y : z" notation

$x == 1 ? print "x was '1'" : print "x was something else";

While that's technically correct it doesn't take advantage of the fact that the ternary operator has a return value; whatever expression is evaluate after the ?.

See another adaptation that takes advantage of this feature.

print( "x was " . $x == 1 ? "'1'" : "someting else" );

Dave

Replies are listed 'Best First'.
Re^3: "x ? y : z" notation
by rovf (Priest) on Mar 26, 2009 at 09:09 UTC
    take advantage of the fact that the ternary operator has a return value
    How true; Perl is a bit unorthogonal in this respect, in that there is (at least) one case where you can achieve this effect with a plain 'if':

    sub lessthan { if($_[0] < $_[1]) {1} else {0} }
    Some languages (old examples: Algol60 and Algol68) are more regular in this respect...

    BTW, does someone know by chance which was the first language which used ?: to represent "ternary if"? Of course you had this already in LISP or BCPL, but with a different syntax. The earliest occurance of ?: I know of, is in C, but I wouldn't be surprised if it was used in even older languages already.

    -- 
    Ronald Fischer <ynnor@mm.st>