Skip to content

Instantly share code, notes, and snippets.

@piyo7
Last active June 24, 2019 01:30
Show Gist options
  • Save piyo7/a82da2bcb5ede5a53d6d93354d7cea6f to your computer and use it in GitHub Desktop.
Save piyo7/a82da2bcb5ede5a53d6d93354d7cea6f to your computer and use it in GitHub Desktop.
Scalaで一番よく使うローンパターン ref: https://qiita.com/piyo7/items/c9be1f39bcfea43a778a
import java.io.Writer
import scala.io.Source
object Using {
def apply[A, B](resource: A)(process: A => B)(implicit closer: Closer[A]): B =
try {
process(resource)
} finally {
closer.close(resource)
}
}
case class Closer[-A](close: A => Unit)
object Closer {
implicit val sourceCloser: Closer[Source] = Closer(_.close())
implicit val writerCloser: Closer[Writer] = Closer(_.close())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment