在运行时编译并执行 Scala 代码
是否可以在运行时在 Scala 或 Java 中将 scala 代码编译并作为字符串执行?
我的想法是使用 Scala 构建 DSL,然后让 Java 程序员在 Java 中使用 DSL。
我听说 scala.tools.nsc.Interpreter 类可以执行类似的操作,但是当我将其导入到我的 scala 文件中时,我得到“对象工具不是 scala 包的成员”。
那么有人可以给我提示吗?
Is is possible to compile and execute scala code as a string at runtime either in Scala or in Java?
My idea is to build a DSL using Scala then let Java programmers use the DSL inside Java.
I heard that the class scala.tools.nsc.Interpreter can do something like that, but when I imported it inside my scala file, I got "object tools is not a member of package scala."
So could anybody give me a hint?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 2.10.0 中,我们公开了 Scala 反射 API,其中包括运行时编译工具。更多详细信息可以在这里找到:从字符串生成一个类并在 Scala 2.10 中实例化它。
In 2.10.0 we expose Scala reflection API, which among everything else includes a runtime compilation facility. More details can be found here: Generating a class from string and instantiating it in Scala 2.10.
我推荐你 twitter-util 的 Eval
I recommend you twitter-util's Eval
对于 scala3,现在可以使用 dotty 来实现:
sbt 依赖项例如
"org.scala-lang" %% "scala3-compiler" % "3.1.3"
For scala3 this can be now achieved with
dotty
:The sbt dependency is e.g.
"org.scala-lang" %% "scala3-compiler" % "3.1.3"