記事「'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みたいで便利。
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みたいで便利。