首页 文章

Groovy多资源关闭

提问于
浏览
1

我正在使用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()
}

1 回答

  • 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)
    

    请注意,闭包必须包含两个方法调用的预期代码 .

相关问题