我花了几个小时调查一个话题。我绝对不是我的深度。我想要的是以编程方式运行scala解释器,并能够从解释器中提取对象值。例如,如果我发送
val a = 1
val b = a + 1
我希望能够将b读出为Int,而不仅仅是打印出来的字符串
b = 2
源代码密集。到目前为止,我没有看到任何允许这样提取的部分。这里的任何专家都可以给我一个提示或告诉我这是完全无稽之谈?
如何在会话之间从scala解释器中获取类型化对象?
答案 0 :(得分:2)
使用JSR 223。
Welcome to Scala version 2.11.7 [...]
scala> import javax.script._
import javax.script._
scala> val engine = (new ScriptEngineManager).getEngineByName("scala")
engine: javax.script.ScriptEngine = scala.tools.nsc.interpreter.IMain@4233e892
scala> engine.eval("val a = 1")
res0: Object = 1
scala> engine.eval("val b = a + 1")
res1: Object = 2
scala> engine.eval("b").asInstanceOf[Int]
res2: Int = 2