10

scala 2.10 ASTで要素を再帰的に検索する最良の方法は何ですか?

power.trees(code)木は、またはmirror.mkToolBox().parseExpr(code) 編集の結果である可能性があります。2.10.0-RC1parseExprでは、名前が に変更されましたparse

私が持っている具体的なユースケースは、メソッド名で特定のクラス/オブジェクトコードからメソッドのコードを抽出することですが、より一般的な方法で定式化された場合、質問は他の人にとってより関連性があると思います.

4

1 に答える 1

5

たぶん、https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606、特にクラス Traverser、Transformer および置換の方法 ( Tree.substituteSymbolsTree.substituteTypesまたはTree.substituteThis)。ツリーからメソッドを抽出する場合は、 を使用しTraverserてメソッドをオーバーライドできますtraverse。traverse メソッドでは、ノードが目的のメソッドに一致するかどうかを確認します。もしそうなら、あなたは終わりです。そうでない場合は、 を呼び出しますsuper.traverse

于 2012-08-25T15:51:40.263 に答える