gpt4 book ai didi

perl - 为什么 Perl 在递增后打印出我不期望的值?

转载 作者:行者123 更新时间:2023-12-04 16:48:54 24 4
gpt4 key购买 nike

我正在从命令行运行这个单行程序:

perl -MList::Util=sum -E 'my $x = 0; say sum(++$x, ++$x)'

为什么说 "4"而不是 "3" ?

最佳答案

首先,请记住 Perl 通过引用传递。这意味着

sum(++$x, ++$x)

基本上是一样的
do {
local @_;
alias $_[0] = ++$x;
alias $_[1] = ++$x;
∑
}

预增量返回变量本身而不是它的副本*,因此这意味着 $_[0]$_[1]别名为 $x .因此, sum查看 $x 的当前值( 2 ) 用于两个参数。

经验法则:不要修改和读取同一语句中的值。

* — 这没有记录在案,但您要问为什么 Perl 的行为方式如此。

关于perl - 为什么 Perl 在递增后打印出我不期望的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6962616/

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