Scala in Depth演示了Loaner模式:
def readFile[T](f: File)(handler: FileInputStream => T): T = {
val resource = new java.io.FileInputStream(f)
try {
handler(resource)
} finally {
resource.close()
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
readFile(new java.io.File("test.txt")) { input =>
println(input.readByte)
}
Run Code Online (Sandbox Code Playgroud)
此代码看似简单明了.什么是Scala中Loaner模式的"反模式",以便我知道如何避免它?
scala ×1