Java 7引入了自动资源管理:
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
Run Code Online (Sandbox Code Playgroud)
这适用于任何实现的类java.lang.AutoClosable.
我知道有几个在Scala中进行自动资源管理的例子,包括Martin Odersky演示的一个例子.
是否有计划向Scala添加语言级资源管理,类似于Java try(...) { }?
Fab*_*ian 13
在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);
}
}
Run Code Online (Sandbox Code Playgroud)
Monadic风格
val first_ten_bytes = managed(new FileInputStream("test.txt")) map {
input =>
val buffer = new Array[Byte](10)
input.read(buffer)
buffer
}
Run Code Online (Sandbox Code Playgroud)
在github页面上有一些例子
| 归档时间: |
|
| 查看次数: |
1556 次 |
| 最近记录: |