Соберите только в том случае, если результат не равен нулю

У меня есть коллекция, и я хочу найти определенные элементы и преобразовать их. Я могу сделать это в два закрытия, но мне было интересно, возможно ли это только с одним?

def c = [1, 2, 3, 4]

def result = c.findAll {
    it % 2 == 0
}

result = result.collect {
   it /= 2
}

Мое истинное использование - с Gradle, я хочу найти конкретную группу файлов и преобразовать их в их полное имя пакета.

Ответ 1

Вы можете использовать findResults:

c.findResults { i ->
    i % 2 == 0 ?    // if this is true
        it / 2 :    // return this
        null        // otherwise skip this one
}