有人请解释下:
在“Programming Perl”一书中,后缀自增运算符被描述为
when placed after, they (
$a--
,$a++
) increment or decrement the variable after returning the value.
所以,据我所知,
$a++
从来没有在 void 上下文中使用,因为有人说过they increment or decrement the variable
但在下一个示例中,变量的值永远不会改变:
my $a = 3;
$a = $a++;
say $a; #always outputs 3
所以我的假设是当值分配给同一个变量时没有理由使用后自动增量,但是“Programming Perl”中的定义应该被认为是错误的,因为操作符不影响变量,而是变量中的值(至少在那个例子中)。那正确吗?
提前欣赏。
最佳答案
为什么,后缀自动递增和自动递减运算符实际上经常在 void 上下文中使用,正是因为它们影响变量 - 而不是值。
您的示例的工作方式是这样的,因为变量在其旧值被分配给它之前会被后递增。换句话说,顺序
my $a = 3; $a = $a++;
...是...
1) $old_value = $a;
2) $a = $a + 1;
3) $a = $old_value;
您是否应该更换
$a = $a++
与 $b = $a++
在您的示例中,然后打印 $b 和 $a 的值,您会清楚地看到差异:而 $a
变得递增(因此,等于 4),$b
被分配了旧值 $a
(3).
关于perl - perl 表达式 $a = $a++ 中是否有任何副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11530490/