5

这在 Perl 中意味着什么?

  1. if (@array)
  2. if (!@array)

这是否意味着如果我们要求 Perl 检查数组是否存在?

谢谢

4

3 回答 3

12

标量上下文中的数组返回元素的数量。所以if(@array)检查数组是否有任何元素。它类似于if(scalar(@array)!=0)

于 2013-10-14T20:57:19.170 回答
11

在 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 就不会让你运行一个引用不存在变量的程序。

于 2013-10-14T21:07:25.457 回答
5

if(@array)如果@array至少有一个元素,则为真。

my @array;
if (!@array) { print "empty array\n"; }
push @array, 11;
if (@array) { print "array has at least one element\n"; }
于 2013-10-14T20:56:32.277 回答