少し考えてみると、現在のオブジェクト内でその定義を満たす他のアイテムを深く検索し、それらを呼び出す scala トレイトを作成できるかどうか疑問に思っています。例えば:
trait CanDebug { this =>
def depthFirstDebug(level:Int) {
for ( x<-(this object search matching type CanDebug)) {
x.depthFirstDebug(level+1)
}
println("level "+level+" "+this.toString)
}
}
case class A (s:String) extends CanDebug
class B extends CanDebug {
val a1 = A("Hello") //automatically located by CanDebug by it's type
val a2 = A("World")
override def toString = "Start"
}
val b =new B
b.depthFirstDebug(0)
次のような効果を出力します。
レベル 1 ハロー
レベル 1 ワールド
レベル 0 スタート
Scala 2.10.2 を使用すると、リフレクションを使用してこれが可能になるはずですが、ロジスティクスがわかりません。ありがとうございました