路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

メモ: Scalaのお勉強 #4 usingを書いてみる

2008-11-07 13:35:40 | プログラミング
記事「'Loan' pattern」
http://scala.sygneca.com/patterns/loan
を参考にして、

自分なりのusingを書いてみる。

--------------------------------

package disposetest

object Using {
  def using[ A, R <: { def dispose :Unit } ](r: R)(f: R => A): A = {
    try {
      f(r)
    } finally {
      r.dispose
    }
  }
}

class DisposableA {
  println("I'm created.")
  
  def greet = println("I'm working.")
  
  def dispose = println("I'm disposed.")
}

object Main {
  import Using._
  
  def main(args: Array[String]) {
    val d = new DisposableA()
    using(d) { d =>
      d.greet
    }
  }
}

--------------------------------

一応、うまく動いている様子。

structured typesはducktypingみたいで便利。

最新の画像もっと見る