我有一个布尔元素列表:
def list=[true,false,true,true]
我问是否存在以下方法:
list.joinBoolean('&&')
<假
因为:真实&&虚假&&真实&& true = false
list.joinBoolean('||')
<真的
因为:true ||假||真||真=真
如果它不存在,我知道如何进行循环以获得预期的结果;
AND
boolean tmp=true;
list.each{e->
tmp=tmp && e;
}
return tmp;
或
boolean tmp=false;
list.each{e->
tmp=tmp || e;
}
return tmp;
答案 0 :(得分:4)
any
和every
方法可以派上用场
答案 1 :(得分:4)
或者:
list.inject { a, b -> a && b }
list.inject { a, b -> a || b }
如果list
可以为空,则需要使用更长的注入形式:
list.inject(false) { a, b -> a && b }
list.inject(false) { a, b -> a || b }
或使用下面的any
和every
方法
其他答案中提到的any
和every
函数的工作方式如下:
list.any()
list.every()
或(更长的形式)
list.any { it == true }
list.every { it == true }
答案 2 :(得分:1)
不,没有这样的方法。但是你可以在没有每次循环的情况下做到这一点:
def list=[true,false,true,true]
list.any{it==true} // will work as list.joinBoolean('||')
list.every{it==true} // will work as list.joinBoolean('&&')