2

我正在寻找这样的东西:(OR我假设的内置函数在哪里)

代码:

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

预期结果:

1

Perl 有可能吗?

4

4 回答 4

10

List::Util reduce怎么样

use List::Util qw(reduce);
my $foo = reduce { $a or $b } (1,0);
say $foo;
于 2013-06-11T12:53:19.067 回答
3
sub OR {
    foreach (@_) {
        return 1 if $_;
    }
    return 0;
}

尽管避免使用全大写标识符是个好主意。

于 2013-06-11T12:49:44.620 回答
1
sub any { $_ && return 1 for @_; 0 }

取自:List::Util建议添加 部分。

此外,该all部分的函数将对应于 AND 运算符,依此类推。

于 2013-06-11T12:57:38.520 回答
0

你可以很容易地制作这个函数:

sub OR { 
   my ($first, @rest) = @_; 

   for (@rest) {
      $first ||= $_;
   }

   return $first; # True(1) or False(0)
}

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

于 2013-06-11T12:50:11.830 回答