Scala в глубине демонстрирует шаблон Loaner:
def readFile[T](f: File)(handler: FileInputStream => T): T = {
val resource = new java.io.FileInputStream(f)
try {
handler(resource)
} finally {
resource.close()
}
}
Пример использования:
readFile(new java.io.File("test.txt")) { input =>
println(input.readByte)
}
Этот код выглядит простым и понятным. Что такое "анти-шаблон" шаблона Loaner в Scala, чтобы я знал, как его избежать?