作为一个思考练习,我想知道是否有可能制作一个 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,我相信这应该可以使用反射,但我不确定后勤工作。谢谢