Компиляция объекта Scala с использованием NSC - PullRequest
0 голосов
/ 12 октября 2018

Может ли кто-нибудь привести простой пример того, как я использовал бы scala.tools.nsc для компиляции класса Scala во время выполнения изнутри JVM?Я экспериментирую с некоторым динамическим поведением, где я хочу иметь возможность компилировать классы Scala во время выполнения, а затем загружать и использовать их.В основном меня интересует компиляция объектов с чистыми функциями примитивных типов (Doubles, Floats и т. Д.).Спасибо!

1 Ответ

0 голосов
/ 13 октября 2018

Комментарий о 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")
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...