>>>>> "SHC" == Shawn H Corey <shawnhco...@gmail.com> writes:

  SHC> Assignment has lower precedence than ?:  It is done last.  What you
  SHC> wrote above is:

  SHC>     (($foo == 1) ?
  SHC>  $bar = 0 :
  SHC>  $bar ) = 1;

  SHC> Which assigns 1 to $bar regardless of what $foo is.

when will people learn?? the ternary operator is for CHOOSING A
VALUE. it is NOT for side effects. its precedence is designed to allow
it to be assigned, NOT to have assignments done inside.


NEVER USE ?: for side effects. ALWAYS use it to return a value chosen
from two. do not break this rule and it will always work.

        $bar = ($foo == 1) ? 0 : 1 ;

that is the proper answer to the OP's question. no side effects, only
ONE use of $bar and easy to read. the () are optional but i like them to
highlight what the boolean part is.

uri

-- 
Uri Guttman  ------  u...@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to