1. ホーム
  2. scala

[解決済み] Scalaの自動リソース管理にはどのようなものがありますか?

2022-12-09 15:43:07

質問

ScalaのARM(自動リソース管理)の例をWebでたくさん見かけました。それは、1つを書くための通過儀礼であるように見えますが、ほとんどは互いにかなり似ています。I した を使ったかなりクールな例を見たが。

とにかく、このコードの多くには何らかの欠陥があるので、ここ Stack Overflow でリファレンスを作成し、最も正しく適切なバージョンに投票できるようにするのは良い考えだと思いました。

どのように解決するのですか?

今のところ Scala 2.13 がようやくサポートされました。 try with resources を使うことで を使うことで :), 例

val lines: Try[Seq[String]] =
  Using(new BufferedReader(new FileReader("file.txt"))) { reader =>
    Iterator.unfold(())(_ => Option(reader.readLine()).map(_ -> ())).toList
  }

または Using.resource 避ける Try

val lines: Seq[String] =
  Using.resource(new BufferedReader(new FileReader("file.txt"))) { reader =>
    Iterator.unfold(())(_ => Option(reader.readLine()).map(_ -> ())).toList
  }

他の例は を使って のドキュメントを参照してください。

自動的なリソース管理を行うためのユーティリティです。リソースを使った操作を行った後、作成時と逆の順序でリソースを解放することができます。