作为一种思考练习,我想知道是否有可能创建一个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)
输出以下内容:
一级 Hello
一级 World
零级 Start
使用 Scala 2.10.2,我相信可以使用反射实现,但我不确定具体的操作。谢谢