J'utilise Scala toolbox pour évaluer du code Scala pour un interpréteur Web. Il fonctionne bien, le code ressemble à ceci:En utilisant Scala Toolbox eval, comment définir la valeur I que je peux utiliser dans les evals postérieurs?
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]
}
}
je peux faire quelque chose comme:
Eval.eval[Long]("1 + 1")
et obtenir 2
retour. La question se pose quand je veux définir quelque chose:
Eval.eval[Unit]("val yellow = 5")
Eval.eval[Long]("yellow")
Je reçois une erreur not found: value yellow
. Comment puis-je définir une valeur que je peux utiliser dans des évaluations ultérieures avec Scala Toolbox?
Merci!
Ah c'est génial! Le seul problème est maintenant comment puis-je obtenir l'exception qui s'est produite * dans * le moteur s'il y avait une erreur dans le script? En ce moment, il retourne juste une exception ScriptException et '.getMessage()' renvoie 'javax.script.ScriptException: erreur de compilation», même si la cause réelle est imprimée au terminal? – prismofeverything