challenge メソッドのフック

例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。

そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。

Posted feedbacks - Scala

traitを使ってみました。フックを差し込むクラスは finalでない必要があります。 参考URL: http://jonasboner.com/2008/02/06/aop-style-mixin-composition-stacks-in-scala/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
trait ReaderInterceptor {
  def read() :Int
}

trait ReaderInterceptorExample extends ReaderInterceptor {
  abstract override def read() :Int = {
    val result = super.read
    if(result != -1) println("character: " + result.toChar)
    result
  }
}

object Main extends Application {
  import java.io._
  val reader = new StringReader("ABCDE") with ReaderInterceptorExample
  var ch :Int = 0
  while({ch = reader.read; ch != -1}){}
}

Index

Feed

Other

Link

Pathtraq

loading...