gpt4 book ai didi

perl - 如何在 Perl 中检查数组的所有元素是否相同?

转载 作者:行者123 更新时间:2023-12-04 01:23:33 25 4
gpt4 key购买 nike

我有一个数组 @test .检查数组的每个元素是否为相同字符串的最佳方法是什么?

我知道我可以用 foreach 做到这一点循环但有没有更好的方法来做到这一点?我检查了 map 功能,但我不确定这是否是我需要的。

最佳答案

如果字符串是已知的,您可以使用 grep 在标量上下文中:

if (@test == grep { $_ eq $string } @test) {
# all equal
}

否则,使用哈希:
my %string = map { $_, 1 } @test;
if (keys %string == 1) {
# all equal
}

或更短的版本:
if (keys %{{ map {$_, 1} @test }} == 1) {
# all equal
}

注意: undef在 Perl 中用作字符串时, ined 值的行为类似于空字符串 ( "" )。因此,如果数组仅包含空字符串和 undef,则检查将返回 true。 s。

这是一个考虑到这一点的解决方案:
my $is_equal = 0;
my $string = $test[0]; # the first element

for my $i (0..$#test) {
last unless defined $string == defined $test[$i];
last if defined $test[$i] && $test[$i] ne $string;
$is_equal = 1 if $i == $#test;
}

关于perl - 如何在 Perl 中检查数组的所有元素是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com