是否有任何直接的方法在Perl数组上应用逻辑运算符?

时间:2013-06-11 12:44:23

标签: arrays perl logical-operators

我正在寻找这样的事情: (其中OR是我假设的内置函数)

代码:

@x=(1, 0, 1, 1, 1);
$a=OR(@x);
print $a;

预期结果:

1

Perl可以实现吗?

4 个答案:

答案 0 :(得分:10)

List::Util reduce

怎么样?
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)
}

注意:这会评估整个列表,实际上你可以停在第一个值,这是真的。