3

Scala式に対応するツリーを取得し、結果のツリーをトラバースすることも可能であることを理解しています。特定のツリーノードが何らかの基準に一致するとします。そのノードをその場で変更できるようにするために、どのメソッド呼び出しが必要ですか?つまり、他のツリーに置き換えますか?

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)
    }
}
4

1 に答える 1

2

別の質問では、 Transformerを使用して同様のことを行うように提案されました。ただし、その場でツリーを変更することはできません。

于 2013-02-05T22:21:00.393 に答える