检查数组和哈希是否为空
Check Array and Hash is Empty or Not
我有一个数组和散列。我只是想看看它们是否都为空
我在下面找到了两种检查方法。任何更足够的建议。
#!/usr/bin/perl
use strict; use warnings;
use Data::Dumper;
my @a = qw/a b c/;
print Dumper(\@a);
my %b = (1 => "Hi");
print Dumper(\%b);
@a = ();
%b = ();
#Method 1
if(!@a && !%b){
print "Empty\n";
} else {
print "Not empty\n";
}
#Method 2
if(!scalar @a && !scalar keys %b){
print "Empty\n";
} else {
print "Not empty\n";
}
这里的情况是,要么两者都是 Empty,要么两者都有一些值。
查找散列或数组是否为空,
- Hash empty-ness:
(%hash)
和 (keys %hash)
,当在布尔上下文中使用时,在内部同样优化,并且自此从 perl 5.28.0 开始。他们都只是检查 non-emptiness 的散列并评估为 true 或 false 值。在此之前,它要复杂得多,并且跨版本发生变化,也就是说 (keys %hash)
可能 更快,但这不再是问题。
- 数组empty-ness:
@array
在标量上下文中一直是高效的,并且会告诉你数组是否为空。
数组
在标量上下文中使用 @a
。
示例:
say @a ? "not empty" : "empty";
@a
or die( "At least one value is required" );
my $num_elements = @a;
哈希
在标量上下文中使用 %h
或 keys( %h )
。
如果代码在旧版本的 Perl 上是 运行,您需要 keys( %hash )
,因为 %h
是 inefficient before 5.26。
示例:
say %h ? "not empty" : "empty"; # Slower before 5.26
say keys( %h ) ? "not empty" : "empty";
%h # Slower before 5.26
or die( "At least one element is required" );
keys( %h )
or die( "At least one element is required" );
my $has_elements = %h; # Slower before 5.26
my $num_elements = %h; # 5.26+
my $num_elements = keys( %h );
请注意 !@a
和 !scalar @a
相同 因为 !
已经强加了标量上下文。 !scalar keys %b
和 !keys %b
.
也是如此
我有一个数组和散列。我只是想看看它们是否都为空
我在下面找到了两种检查方法。任何更足够的建议。
#!/usr/bin/perl
use strict; use warnings;
use Data::Dumper;
my @a = qw/a b c/;
print Dumper(\@a);
my %b = (1 => "Hi");
print Dumper(\%b);
@a = ();
%b = ();
#Method 1
if(!@a && !%b){
print "Empty\n";
} else {
print "Not empty\n";
}
#Method 2
if(!scalar @a && !scalar keys %b){
print "Empty\n";
} else {
print "Not empty\n";
}
这里的情况是,要么两者都是 Empty,要么两者都有一些值。
查找散列或数组是否为空,
- Hash empty-ness:
(%hash)
和(keys %hash)
,当在布尔上下文中使用时,在内部同样优化,并且自此从 perl 5.28.0 开始。他们都只是检查 non-emptiness 的散列并评估为 true 或 false 值。在此之前,它要复杂得多,并且跨版本发生变化,也就是说(keys %hash)
可能 更快,但这不再是问题。 - 数组empty-ness:
@array
在标量上下文中一直是高效的,并且会告诉你数组是否为空。
数组
在标量上下文中使用 @a
。
示例:
say @a ? "not empty" : "empty";
@a
or die( "At least one value is required" );
my $num_elements = @a;
哈希
在标量上下文中使用 %h
或 keys( %h )
。
如果代码在旧版本的 Perl 上是 运行,您需要 keys( %hash )
,因为 %h
是 inefficient before 5.26。
示例:
say %h ? "not empty" : "empty"; # Slower before 5.26
say keys( %h ) ? "not empty" : "empty";
%h # Slower before 5.26
or die( "At least one element is required" );
keys( %h )
or die( "At least one element is required" );
my $has_elements = %h; # Slower before 5.26
my $num_elements = %h; # 5.26+
my $num_elements = keys( %h );
请注意 !@a
和 !scalar @a
相同 因为 !
已经强加了标量上下文。 !scalar keys %b
和 !keys %b
.