我想替换AST中出现的所有特定Term.Name实例。类似于:
tree match {
case t @ Term.Name(n) if (n == "bla") => Term.Apply(Term.Select(t, Term.Name("read")), List())
}然而,要做到这一点,我将不得不检查所有不同类型的陈述等,并检查在这些声明中的术语。有什么更简单的方法用标尺来替换所有特定术语的出现?
发布于 2019-07-21 18:54:04
尝试使用Transformer
import scala.meta._
val transformer = new Transformer {
override def apply(tree: Tree): Tree = tree match {
case t @ Term.Name(n) if (n == "bla") => Term.Apply(Term.Select(t, Term.Name("read")), List())
case node => super.apply(node)
}
}
transformer(tree)https://scalameta.org/docs/trees/guide.html#custom-transformations
https://stackoverflow.com/questions/57132720
复制相似问题