gpt4 book ai didi

Scala 的 Java 7 风格自动资源管理

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:27 24 4
gpt4 key购买 nike

Java 7 引入了自动资源管理:

try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}

这将适用于任何实现 java.lang.AutoClosable 的类。

我知道有几个在 Scala 中进行自动资源管理的示例,包括 Martin Odersky 演示的一个示例。

是否有计划在 Scala 中添加一个语言级别的资源管理,类似于 Java 的 try(...) { }

最佳答案

在 scala 中,它可以作为库添加。例如来自 jsuereth 的 scala-arm(https://github.com/jsuereth/scala-arm):

祈使式:

// Copy input into output.
for(input <- managed(new java.io.FileInputStream("test.txt");
output <- managed(new java.io.FileOutputStream("test2.txt")) {
val buffer = new Array[Byte](512)
while(input.read(buffer) != -1) {
output.write(buffer);
}
}

单子(monad)风格

val first_ten_bytes = managed(new FileInputStream("test.txt")) map { 
input =>
val buffer = new Array[Byte](10)
input.read(buffer)
buffer
}

在github页面上有更多的例子

关于Scala 的 Java 7 风格自动资源管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com