有人可以举一个简单的例子来说明我如何在运行时从 JVM 中使用 scala.tools.nsc 编译 Scala 类吗?我正在尝试一些动态行为,我希望能够在运行时编译 Scala 类,然后加载和使用它们。我最感兴趣的是用原始类型的纯函数(双精度数、浮点数等)编译对象。谢谢!
问问题
66 次
1 回答
0
关于scala.tools.reflect.Toolbox
让我走上正轨的评论,我最终能够回答我自己的问题。我一直在寻找这样的东西:
import scala.reflect.runtime._
import scala.reflect.runtime.universe._
import scala.tools.reflect.ToolBox
object Main extends App {
val cm = universe.runtimeMirror(getClass.getClassLoader)
val toolBox = cm.mkToolBox()
val f = toolBox.eval(toolBox.parse("""(x:Double) => x*x"""))
f match {
case f1:scala.Function1[Double, Any] =>
println(f1(4.4))
case _ =>
throw new Exception("Expected a Function1[Double,Any] but got something else")
}
}
于 2018-10-13T14:31:51.617 回答