考虑以下函数声明(在这种情况下非常简单,但问题当然适用于一般情况):
def f( x : Int ) = { val y = 1; val z = 2; x * y * z }
鉴于通过运行时反射为f获得的树,是否有任何内置的
支持a)获取变量声明?
b)他们的相关范围?
我可以看到一个人可以通过编写自定义树遍历来获得a),然后b)通过从声明点执行进一步的遍历。
然而,这显然是一项非常重要且容易出错的事业。
特别是,我发现反射API包含一个Scope类,但我无法确定它是否在提供b)中起任何作用。