REFLのコードスニペットのツリーを表示するには、スカラ2.10.0マイルストーンの時代に、まだ反射が初期段階にあったときに、私はasked a questionをどうやって使うのでしょうか。優れた答えは、私が尋ねた以上に進んで、木がどのように解析され、評価されるのかを示したので、私は先に進んで、私が今日行っていた小さなプロジェクトでそれを使用しようとしました。 Scala ToolBoxでREPL定義を確認するにはどうすればよいですか?
は残念ながら、コードが解析され、任意のREPLの定義を参照するようには思えないような方法で評価:scala> val x = 1
x: Int = 1
scala> import scala.tools.reflect.ToolBox
import scala.tools.reflect.ToolBox
scala> val tb = scala.reflect.runtime.universe.runtimeMirror(
getClass.getClassLoader).mkToolBox()
tb: scala.tools.reflect.ToolBox[reflect.runtime.universe.type] = ...
scala> tb.eval(tb.parse("x"))
scala.tools.reflect.ToolBoxError: reflective compilation has failed:
not found: value x
それはREPLで作られた定義を認識するために取得する方法はありますか?
REPLではなく、私はsbtプロジェクトに全く同じコード(https://gist.github.com/jedesah/5812481)を書きました。私はREPLと同じ動作をします。これがToolBoxが他のコンテキストで動作する方法であれば、私は非常に興味があると思います。 – jedesah
@ UnncovercoverAgentツールボックスのコードは、「ルート」から到達可能なものにアクセスできます。そうでなければ、まったく役に立たないでしょう。あなたが示した場合、その変数は "root"で利用できませんでした。 –
強烈な言葉が無用であり、自己完結型の木を評価するのに使用できます。いずれにしても、あなたが作業しているこの小さなプロジェクトはオープンソースですか?私は外部(ツリー自体から)の定義にアクセスする例を見たいと思っていますが、私はあなたが「ルート」からそれらに達することによって何を意味するのか正確にはわかりません。 – jedesah