我知道可以获得与Scala表达式相对应的Tree,也可以遍历生成的树。假设一个给定的树节点与某个标准匹配,我需要在哪个方法调用它来修改它?,即用其他树替换它?
object traverser extends Traverser {
var applies = List[Apply]()
override def traverse(tree: Tree): Unit = tree match {
case someCriterion => modifyNodeSomehow // How to do this?
// Otherwise...
case app @ Apply(fun, args) =>
applies = app :: applies
super.traverse(fun)
super.traverseTrees(args)
case _ => super.traverse(tree)
}
}