次の関数宣言を考えてみましょう (この場合はかなり些細なことですが、もちろん問題は一般的なケースにも当てはまります)。
def f( x : Int ) = { val y = 1; val z = 2; x * y * z }
ランタイム リフレクションによって f に対して取得された Tree を考えると、組み込みのサポートはありますか?
a) 変数宣言を取得していますか?
b) 関連するスコープ
a) カスタム ツリー トラバーサーを記述し、b) 宣言の時点からさらにトラバーサルを実行することで取得できることがわかります。
ただし、これは明らかに重要で、エラーが発生しやすい作業です。
特に、リフレクション API には Scope クラスが含まれていることがわかりますが、これが b) を提供する上で何らかの役割を果たすかどうかを判断できません。