C# にusing
はIDisposable
インターフェイスがあります。Java 7+ には、try
およびAutoCloseable
インターフェースと同じ機能があります。Scala では、この問題に対する独自の実装を選択できます。
scala-arm が一般的な選択肢のようで、Typesafe の従業員の 1 人によって保守されています。しかし、このような単純な動作は非常に複雑に思えます。明確にするために、使用手順は簡単ですが、すべてのコードが内部でどのように機能するかを理解するのはかなり複雑です。
次の非常に単純な ARM ソリューションを作成しました。
object SimpleARM {
def apply[T, Q](c: T {def close(): Unit})(f: (T) => Q): Q = {
try {
f(c)
} finally {
c.close()
}
}
}
- シンプルアームのようなものに何か利点はありますか? 余分な複雑さはすべて、余分な利益をもたらすはずです。
- 通常、カスタム コードを使用するよりも、汎用的な動作のために他のユーザーによってサポートされている公開されたオープン ソース ライブラリを使用することを強くお勧めします。
- 誰でも改善を推奨できますか?
- この単純なアプローチに制限はありますか?