in reply to Re: Need clean code
in thread Need clean code
For what it's worth, some of this applies equally in many languages such as C and C++. There's not really a concept of definedness in C/C++, but the concept of short circuiting in expressions using ||, and of ternary operators is nearly identical.But please be warned that the semantics of the || and && operators in C/C++ is significantly different to Perl. For example, this Perl code:
prints:my $var; $var = 0; $var = $var || 30; print "1. var=$var\n"; $var = 0; $var ||= 30; print "2. var=$var\n";
1. var=30 2. var=30
While this C++ code:
prints:int var = 0; var = var || 30; printf("1. var=%d\n", var); // var ||= 30; // oops, syntax error in C++
Why? Because in C/C++, the (short-circuiting) || and && operators always return 0 or 1. Unlike Perl, they do NOT return the last value evaluated.1. var=1
IMHO, this deliberate Perl change in semantics of these two venerable short-circuiting operators was a clever innovation from Larry, making them more convenient to use, notably when setting default values.
|
|---|