gpt4 book ai didi

perl - perl 表达式 $a = $a++ 中是否有任何副作用?

转载 作者:行者123 更新时间:2023-12-05 01:00:46 25 4
gpt4 key购买 nike

有人请解释下:

在“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com