C#有using
带IDisposable
接口。Java 7+ 具有与接口相同try
的功能AutoCloseable
。Scala 允许您选择自己的实现来解决这个问题。
scala-arm 似乎是流行的选择,由 Typesafe 的一名员工维护。但是,对于这样一个简单的行为,它似乎非常复杂。澄清一下,使用说明很简单,但了解所有代码在内部是如何工作的却相当复杂。
我刚刚写了以下超级简单的ARM解决方案:
object SimpleARM {
def apply[T, Q](c: T {def close(): Unit})(f: (T) => Q): Q = {
try {
f(c)
} finally {
c.close()
}
}
}
- 像简单手臂这样的东西有什么好处吗?似乎所有额外的复杂性都应该带来额外的好处。
- 通常,最好使用其他人支持的公共开源库来实现通用行为,而不是使用自定义代码。
- 任何人都可以推荐任何改进吗?
- 这种简单的方法有什么限制吗?