我正在寻找这样的事情:
(其中OR
是我假设的内置函数)
代码:
@x=(1, 0, 1, 1, 1);
$a=OR(@x);
print $a;
预期结果:
1
Perl可以实现吗?
答案 0 :(得分:10)
use List::Util qw(reduce);
my $foo = reduce { $a or $b } (1,0);
say $foo;
答案 1 :(得分:3)
sub OR {
foreach (@_) {
return 1 if $_;
}
return 0;
}
尽管避免使用全资本标识符是个好主意。
答案 2 :(得分:1)
sub any { $_ && return 1 for @_; 0 }
取自List::Util
的{{3}}部分。
此外,该部分的all
函数将对应于AND运算符,依此类推。
答案 3 :(得分:0)
你可以非常轻松地制作这个功能:
sub OR {
my ($first, @rest) = @_;
for (@rest) {
$first ||= $_;
}
return $first; # True(1) or False(0)
}
注意:这会评估整个列表,实际上你可以停在第一个值,这是真的。