这在 Perl 中意味着什么?
if (@array)
if (!@array)
这是否意味着如果我们要求 Perl 检查数组是否存在?
谢谢
标量上下文中的数组返回元素的数量。所以if(@array)
检查数组是否有任何元素。它类似于if(scalar(@array)!=0)
。
在 Perl 中,标量上下文中的数组计算数组中元素的数量。所以
my @array = ('a', 'b');
my $n = @array;
设置$n
为 2。
此外,if
将标量上下文应用于其参数。所以
my @array = ('a', 'b');
if (@array) { ...
是相同的
if (2) { ...
并且,因为 2 被认为是true ,所以if
将执行主体。
最后,Perl 认为是假的唯一数字是零,所以如果你传递一个空数组
my @array = ();
if (@array) { ...
它与
if (0) { ...
并且主体if
不会被执行。
没有办法发现 Perl 中是否存在变量。只要use strict
你总是应该这样做,Perl 就不会让你运行一个引用不存在变量的程序。
if(@array)
如果@array
至少有一个元素,则为真。
my @array;
if (!@array) { print "empty array\n"; }
push @array, 11;
if (@array) { print "array has at least one element\n"; }