Groovy закрытие нескольких ресурсов

Я использую функцию закрытия ресурсов Groovy, и мне было интересно, можно ли создать одно закрытие, которое управляет двумя ресурсами. Например, если у меня есть следующие два отдельных замыкания, можно ли создать одно замыкание, которое управляет обоими? Или мне действительно нужно вкладывать замыкания?

new File(baseDir, 'haiku.txt').withWriter('utf-8') { writer ->
    writer.writeLine 'Into the ancient pond'
}

new Scanner(System.in).with { consoleInput ->
    println consoleInput.nextLine()
}

person kibowki    schedule 03.07.2017    source источник
comment
Может быть, эта ссылка поможет вам? stackoverflow.com/questions/23382079/   -  person rafaelim    schedule 04.07.2017


Ответы (1)


Нет. Синтаксис method(arg) {} является альтернативным синтаксисом для method(arg, {}), поэтому вы можете сделать это:

fn = { writer ->
    writer.writeLine 'Into the ancient pond'
}

new File(baseDir, 'haiku.txt').withWriter('utf-8', fn) 

new Scanner(System.in).with(fn)

Обратите внимание, что замыкание должно содержать ожидаемый код для обоих вызовов метода.

person Will    schedule 04.07.2017