1
저는 웹 인터프리터에 대한 스칼라 코드를 평가하기 위해 스칼라 도구 상자를 사용하고 있습니다. 그것은 잘 작동 코드는 다음과 같습니다Scala Toolbox eval을 사용하여 나중의 평가에서 사용할 수있는 값을 어떻게 정의합니까?
import scala.reflect.runtime.universe._
import scala.tools.reflect.ToolBox
object Eval {
val toolbox = runtimeMirror(getClass.getClassLoader).mkToolBox()
def eval[T](code: String): T = {
toolbox.eval(toolbox.parse(code)).asInstanceOf[T]
}
}
내가 좋아하는 뭔가를 할 수 있습니다
Eval.eval[Long]("1 + 1")
및 2
다시 얻을.
Eval.eval[Unit]("val yellow = 5")
Eval.eval[Long]("yellow")
나는 not found: value yellow
오류 : 뭔가를 정의 할 때 문제는 온다. Scala Toolbox로 나중에 평가할 때 사용할 수있는 값을 어떻게 정의합니까?
감사합니다.
아하 이것은 아주 좋습니다! 유일한 문제는 스크립트에서 오류가 발생했을 때 엔진에서 발생한 예외를 어떻게 얻을 수 있습니까? 지금 당장은 단지 ScriptException을 반환하고, 실제 원인이 터미널에 출력 되더라도'.getMessage()'는'javax.script.ScriptException : compile-time error'를 반환합니까? – prismofeverything