groovy中布尔元素的联接列表

groovy中布尔元素的联接列表,groovy,arraylist,Groovy,Arraylist,我有一个布尔元素列表: def list=[true,false,true,true] 我询问是否存在以下方法: list.joinBoolean('&&')

我有一个布尔元素列表:

  def list=[true,false,true,true]
我询问是否存在以下方法:

  list.joinBoolean('&&')
因为:true&&false&&true&&true=false

list.joinBoolean('||')
因为:真|假|真|真=真

如果它不存在,我知道如何进行循环以获得预期的结果

  boolean tmp=true;
  list.each{e->
     tmp=tmp && e;    
  }
   return tmp;

  boolean tmp=false;
  list.each{e->
     tmp=tmp || e;    
  }
   return tmp;

任何
每个
方法都可以在这里派上用场

不,没有这样的方法。但您可以在不进行每次循环的情况下完成:

def list=[true,false,true,true]
list.any{it==true} // will work as list.joinBoolean('||')
list.every{it==true} // will work as list.joinBoolean('&&')
或:

如果
列表
可以为空,则需要使用较长的注入形式:

list.inject(false) { a, b -> a && b }
list.inject(false) { a, b -> a || b }
或者使用下面的
any
every
方法


顺便提一下 其他答案中提到的
any
each
函数的工作原理如下:

list.any()
list.every()
或(较长形式)


这不会运行
没有方法签名:java.util.ArrayList.all()适用于参数类型
yep,missed comparison+1(我总是忘记它们),尽管
any
every
不是吗(不是
all
)?@tim_yates我不好,ruby有
any
all
,在groovy中,我们有
any
every
。更正答案。我应该在发布之前检查文档:)java.util.NoSuchElementException:在不传递初始值的情况下,无法对空集合调用inject()。@AbdennourToumi So
列表
为空<代码>[]?那么会发生什么呢?@AbdennourToumi如果
列表
可以为空,我会使用
list.any()
来表示
|
list.every()
来表示
&
list.any()
list.every()
list.any { it == true }
list.every { it == true }