Список соединений элементов boolean groovy

У меня есть список логических элементов:

def list=[true,false,true,true]

Я спрашиваю, существует ли метод, например следующий:

list.joinBoolean('&&')

< ложь

Потому что: true && false && true && true = false

list.joinBoolean('||')

< true

Потому что: true || false || true || правда = верно

если он не существует, я знаю, как сделать цикл, чтобы получить ожидаемый результат;

И

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

ИЛИ

boolean tmp=false;
 list.each{e->
 tmp=tmp || e; 
 }
 return tmp;
3 ответа

Или:

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 ниже

BTW

Функции any и every, упомянутые в других ответах, работают следующим образом:

list.any()
list.every()

Или (более длинная форма)

list.any { it == true }
list.every { it == true }


any и every методы могут пригодиться здесь


Нет, такого метода нет. Но вы можете сделать это без каждого цикла:

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

licensed under cc by-sa 3.0 with attribution.