给定一个array @A
我们想检查element $B
它是否在其中。一种方法是这样说:
Foreach $element (@A){
if($element eq $B){
print "$B is in array A";
}
}
然而,当谈到 Perl 时,我总是在考虑最优雅的方式。这就是我在想的:如果我们将 A 转换为变量字符串并使用,有没有办法找出数组 A 是否包含 B
index(@A,$B)=>0
那可能吗?
给定一个array @A
我们想检查element $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 初始化的 Hash
my %check;
@check{@a} = ();
my $found = exists $check{$b};
使用 map 初始化的 Hash
my %check = map { $_ => 1 } @a;
my $found = $check{$b};
use 5.10.1;
$B ~~ @A and say '$B in @A';
use List::AllUtils qw/ any /;
print "\@A contains $B" if any { $B eq $_ } @A;