4

scala.tools.nscAPI 已从 2.10 完全更改为 2.11 。例如,没有Interpreter了。

我正在尝试在 Scala 中构建类似于http://codingbat.com的站点,因此我需要能够在程序运行时编译和运行用户提供的代码。

有谁知道解释如何在任何地方使用新 API 的东西?(我没有运气在谷歌上搜索我认为合理的搜索词。)如果不是,那么了解新 API 的人能否提供一个小的工作示例,让您编译代码然后检索运行结果?

更新2.11.0-M5 似乎破坏了对脚本引擎的支持,但我回到了 2.11.0-M4 并且可以ScriptEngineManager用来获取解释器。奇怪的是,类型是scala.tools.nsc.interpreter.IMain. 该包和类没有出现在 2.11.0-M4 Scaladocs 中,所以我想知道它们是否已经从其他地方的编译器工件中移出,或者是否只是 Scaladoc 生产中的疏忽,它们应该仍然存在.

4

1 回答 1

3

Scala 2.11.0-M4 现在具有 JSR 223 脚本支持,我认为它可能会取代您正在寻找的一些功能。见docs.scala-lang.org/scala/2.11

该功能在 scala 2.11.0-M5 中被破坏,但在 2.11.0-M6和 2.11.0-M4中显然已修复

 Welcome to Scala version 2.11.0-M4 (OpenJDK Server VM, Java 1.7.0_25).
 Type in expressions to have them evaluated.
 Type :help for more information.

 scala> import javax.script.ScriptEngineManager
 import javax.script.ScriptEngineManager

 scala> val e = new ScriptEngineManager().getEngineByName("scala")
 e: javax.script.ScriptEngine = scala.tools.nsc.interpreter.IMain@1741b6d

请参阅ScriptEngine Javadocjavax.script 包摘要

于 2013-10-12T07:27:03.530 回答