C#使用
目前,scala-arm似乎是最受欢迎的选择,并由Typesafe公司的一名员工进行维护。然而,对于这么简单的行为来说,它似乎非常复杂。为了澄清,使用说明很简单,但理解所有该代码内部的工作方式则相当复杂。
我刚刚写了以下超级简单的ARM解决方案:
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()
}
}
}
- 像simple-arm这样的东西有什么好处吗?看起来所有额外的复杂性都应该带来额外的好处。
- 通常,对于一般行为,使用由其他人支持的公共开源库要比使用自定义代码高度可取。
- 有人能推荐任何改进吗?
- 这种简单方法有什么限制吗?
c
== null 的情况。而且如果 close() 抛出异常,不清楚会抛出哪个异常。 - Dzmitry Lazerka