gpt4 book ai didi

Perl:数组中的 undef 元素

转载 作者:行者123 更新时间:2023-12-05 01:04:14 27 4
gpt4 key购买 nike

我在一个数组中定义了一些元素:

my @arrTest;
$arrTest[0]=1;
$arrTest[2]=2;

#Result for @arrTest is: (1, undef, 2)


if($arrTest[1]==0)
{
print "one\n";
}
elsif($arrTest[1] == undef)
{
print "undef\n";
}

我认为它应该打印“undef”。但它在这里打印“一个”...

这是否意味着 $arrTest[1]=undef=0?

如何修改“if条件”来区分数组元素中的“undef”?

最佳答案

代码 $arrTest[1] == 0 中的运算符 ==$arrTest[1] 放入 numeric context因此,如果需要,它的值会被转换为一个数字,解释器可以做的最好的,并在比较中使用。并且当数值测试中的变量尚未定义时,使用 0 以便测试评估为真(变量保持 undef)。

大多数情况下,当我们需要这样做时,我们会听到它(有一些异常(exception))——如果我们有 use warnings; 那就是(最好在程序开始时) 请始终使用 warnings打开并使用 strict .他们直接提供帮助。

为了测试定义性,有 defined

if (not defined $arrTest[1]) { ... }

一个演示

perl -wE'say "zero" if $v == 0; say $v; ++$v; say $v'

-w启用警告。这个命令行程序打印

Use of uninitialized value $v in numeric eq (==) at -e line 1.
zero
Use of uninitialized value $v in say at -e line 1.

1

注意 ++ 如何不发出警告,这是上述异常(exception)之一。

关于Perl:数组中的 undef 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72497430/

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