从scala解释器中获取对象



我花了几个小时研究一个主题。我在这里肯定是力不从心。我想要的是以编程方式运行scala解释器,并能够从解释器中提取对象值。例如,如果我发送

val a = 1
val b = a + 1

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

b = 2

源代码非常密集。到目前为止,我看不出有任何部分可以进行这样的提取。这里有专家能给我小费或告诉我这完全是胡说八道吗?

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

使用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

最新更新