Как получить возвращаемое значение из рекурсивного замыкания Groovy? - PullRequest
0 голосов
/ 24 сентября 2011

Я, кажется, написал рекурсивное закрытие :) достаточно сложно, но я не борюсь за то, как получить обратную связь от этого закрытия.Мое письменное закрытие рекурсивно удаляет файл из начальной точки файловой системы.Я хочу узнать, сколько файлов было удалено!

Как узнать, сколько файлов я удалил?Я пытался с делегатом и т.д., но пока не повезло ..

    def deleteClosure
    deleteClosure = {
        it.eachDir( deleteClosure )
        it.eachFileMatch( ~".*123.jpg" ) {
            it.delete()
        }
    }
    deleteClosure(new File("/tmp/delete.me"))

1 Ответ

2 голосов
/ 24 сентября 2011

Нет необходимости писать собственный рекурсивный код закрытия, Groovy добавляет метод eachFileRecurse к объектам File. Чтобы получить количество удаленных файлов, вы всегда можете просто увеличить счетчик:

import groovy.io.*

def filesDeletedCount = 0
new File('/tmp/delete.me').eachFileRecurse(FileType.FILES) {
    if (it.name ==~ /.*123.jpg$/) {
        it.delete()
        filesDeletedCount++
    }
}

println "Files deleted: ${filesDeletedCount}"
...