Groovy закрытие возврата значения переменной - PullRequest
0 голосов
/ 06 апреля 2020

Очень простой c вопрос, но я не могу найти ответ:

У меня есть следующий код в файле g.groovy, и он работает при выводе на печать:

#! /usr/env/groovy

def matchFiles = { match ->
    new File(".").eachFile() {
        if (it.name =~ match) {
           println it
       }
    }
}

matchFiles('.groovy') выводит ./g.groovy на экран.

Но я хочу записать выходные данные замыкания в переменную и использовать его в другом месте, например,

def fileMatches = matchFiles('.groovy')

, но не могу понять это.

Попытка изменить println it на return it и затем запустить

def fileMatches = matchFiles('.groovy')
fileMatches.println { it }

, но это печатает что-то вроде g$_run_closure2@4b168fa9

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

1 Ответ

1 голос
/ 06 апреля 2020

в соответствии с именем matchFiles Я предполагаю, что вы хотите вернуть все сопоставленные файлы

, поэтому вам нужно определить переменную результата массива, в которой вы собираетесь хранить каждый сопоставленный файл

и затем верните эту result переменную после eachFile{...} закрытия

def matchFiles = { match ->
    def result=[]
    new File(".").eachFile {
        if (it.name =~ match) {
            result.add(it)
        }
    }
    return result
}

println matchFiles(/.*/)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...