我正在使用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()
}
答案 0 :(得分:0)
没有。语法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)
请注意,闭包必须包含两个方法调用的预期代码。