给定一个数组@A,我们想检查元素$B是否在其中.一种方法是这样说:
Foreach $element (@A){ if($element eq $B){ print "$B is in array A"; } }
然而,当它到达Perl时,我总是在思考最优雅的方式.这就是我的想法:
如果我们将A转换为变量字符串并使用,有没有办法找出数组A是否包含B.
index(@A,$B)=>0
那可能吗?
解决方法
有很多方法可以确定元素是否存在于数组中:
>使用foreach
foreach my $element (@a) { if($element eq $b) { # do something last; } }
>使用Grep:
my $found = grep { $_ eq $b } @a;
>使用List::Util模块
use List::Util qw(first); my $found = first { $_ eq $b } @a;
>使用由Slice初始化的哈希
my %check; @check{@a} = (); my $found = exists $check{$b};
>使用由地图初始化的哈希
my %check = map { $_ => 1 } @a; my $found = $check{$b};