从scala解释器中获取对象

时间:2015-11-15 01:48:15

标签: scala interpreter

我花了几个小时调查一个话题。我绝对不是我的深度。我想要的是以编程方式运行scala解释器,并能够从解释器中提取对象值。例如,如果我发送

val a = 1
val b = a + 1

我希望能够将b读出为Int,而不仅仅是打印出来的字符串

b = 2

源代码密集。到目前为止,我没有看到任何允许这样提取的部分。这里的任何专家都可以给我一个提示或告诉我这是完全无稽之谈?

如何在会话之间从scala解释器中获取类型化对象?

1 个答案:

答案 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