gpt4 book ai didi

Perl "my $bar if 0;"与 "my $bar = undef if 0;"

转载 作者:行者123 更新时间:2023-12-04 00:15:44 27 4
gpt4 key购买 nike

以下代码会返回错误,

$ perl -E'sub foo { my $bar if 0; $bar++ }'
This use of my() in false conditional is no longer allowed at -e line 1.

但是这段代码

$ perl -E'sub foo { my $bar = undef if 0; $bar++ }'

不返回错误。这两种形式有区别吗?

最佳答案

my 具有编译时效果和运行时效果,您不想在没有运行时效果的情况下使用 my 变量.

由于有问题的情况是在与声明不同的条件下使用 my 变量,因此您的两个代码段之间没有区别。两者都应避免。

要创建一个子范围内的持久变量,您可以使用

{
my $bar = 0;
sub foo {
return $bar++;
}
}

use feature qw( state );  # 5.10+

sub foo {
state $bar = 0;
return $bar++;
}

关于Perl "my $bar if 0;"与 "my $bar = undef if 0;",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037285/

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