在 Scala 2.9.x 中,我直接使用 tools.nsc.Global
编译某个字符串为一个类,并将其执行。
在 Scala 2.10 中,你可以使用以下代码替换它:
import scala.reflect.runtime._;
val cm = universe.runtimeMirror(getClass.getClassLoader)
import scala.tools.reflect.ToolBox;
val tb = cm.mkToolBox()
tb.eval(tb.parse("class C; new C"))
它可以完美地工作。唯一的问题是,使用旧的(已过时的)方法,我可以使用StoreReporter获得所有编译失败的非常漂亮的摘要(包括错误消息和行号),而新方法只会在编译错误时抛出异常。
有没有办法实现这个功能?