С# имеет using
с интерфейсом IDisposable
. Java 7+ имеет идентичные функциональные возможности с интерфейсом try
и AutoCloseable
. Scala позволяет вам выбрать свою реализацию для этой проблемы.
scala -arm, по-видимому, является популярным выбором и поддерживается одним из сотрудников Typeafe. Однако для такого простого поведения это кажется очень сложным. Чтобы уточнить, инструкции по использованию просты, но понимание того, как весь этот код работает внутри, довольно сложный.
Я просто написал следующее супер простое решение ARM:
object SimpleARM {
def apply[T, Q](c: T {def close(): Unit})(f: (T) => Q): Q = {
try {
f(c)
} finally {
c.close()
}
}
}
- Есть ли какая-нибудь польза для чего-то вроде простой руки? Кажется, вся дополнительная сложность должна принести дополнительную пользу.
- Обычно очень предпочтительно использовать общедоступную библиотеку с открытым исходным кодом, которая поддерживается другими для поведения общего назначения с использованием настраиваемого кода.
- Кто-нибудь может рекомендовать какие-либо улучшения?
- Существуют ли какие-либо ограничения для этого простого подхода?