Comment detail
loan patternのサンプル (Nested Flatten)Java版(#9162)をScalaに移植しました。 これはこれで味わい深いです。 ありがとうございました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | // Java版#9162を移植
import java.io._
case class WithResource[T<:Closeable]( resource:T ) {
def using[F<:Runnable](f:F) : Unit= {
try {
f.run();
} finally {
resource.close();
}
}
}
object Main{
def main(args:Array[String]) : Unit = {
val wr = WithResource( new PrintWriter(
new BufferedWriter(
new OutputStreamWriter(System.out))))
wr.using(new Runnable{
override def run():Unit = {
wr.resource.print("この文字列はflushしないと書き出されない");
wr.resource.print("(closeし忘れは良くある間違い)。");
} } )
}
}
|





匿名
#9162()
[
Java
]
Rating1/1=1.00
・ブロックを抜ける時に強制的にリソースの解放を行う。
・リソースを使う箇所では解放を意識しない。
サンプルでは、mainメソッドの中身がリソースを使う箇所になります。匿名クラスなので構文的には複雑になっていますが、要件は満たしていると思います。
Rating1/1=1.00-0+
1 reply [ reply ]