scala.tools.nsc
API已从2.10完全更改为2.11。例如,不再有Interpreter
。
我正在尝试在Scala中构建类似于http://codingbat.com的网站,因此我需要能够在程序运行时编译和运行用户提供的代码。
有谁知道解释如何在任何地方使用新API的东西? (我没有任何运气谷歌搜索我认为合理的搜索术语。)如果没有,那么对新API有所了解的人是否可以提供一个小的工作示例,让您编译代码然后检索运行它的结果? / p>
更新 2.11.0-M5似乎打破了脚本引擎支持,但我回到了2.11.0-M4,我可以使用ScriptEngineManager
来获得翻译。奇怪的是,类型是scala.tools.nsc.interpreter.IMain
。那个软件包和类没有出现在2.11.0-M4 Scaladocs中,所以我想知道他们是否已经从其他地方的编译器工件中移出,或者如果Scaladoc生产中只有一个疏忽,他们应该仍然在那里
答案 0 :(得分:3)
Scala 2.11.0-M4现在具有JSR 223脚本支持,我认为这可能会取代您正在寻找的一些功能。见docs.scala-lang.org/scala/2.11
该功能在scala 2.11.0-M5中被破坏,但显然是fixed in 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