如果我有一个数组:
@int_array = (7,101,80,22,42);
如何检查整数值80是否在数组中而不遍历每个元素?
最佳答案
您不能没有循环。这就是成为数组意味着什么的一部分。您可以使用grep或smartmatch使用隐式循环,但是仍然存在一个循环。如果要避免循环,请使用哈希代替(或另外使用)。
# grep
if ( grep $_ == 80, @int_array ) ...
# smartmatch
use 5.010001;
if ( 80 ~~ @int_array ) ...
使用Smartmatch之前,请注意:
http://search.cpan.org/dist/perl-5.18.0/pod/perldelta.pod#The_smartmatch_family_of_features_are_now_experimental:
smartmatch系列功能现在处于试验阶段
在v5.10.0中添加了智能匹配,并在v5.10.1中对其进行了重大修改,这一直是人们经常抱怨的问题。尽管有很多方法可以使用它,但事实证明,它对Perl的用户和实现者都是有问题和令人困惑的。关于如何最好地解决该问题,已经有许多建议。显然,Smartmatch几乎肯定会在未来发生变化或消失。不建议依赖其当前行为。
现在,当解析器看到~~,给定或何时发出警告。要禁用这些警告,可以将此行添加到适当的范围
关于arrays - Perl:测试值是否在数组中的好方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4570650/