【问题标题】:Scripting from Scala来自 Scala 的脚本
【发布时间】:2011-10-08 23:45:35
【问题描述】:

我有一个编辑的小项目,我有一些特殊需要,我在一个下午就一起完成了。一位同事看着我的肩膀(你不讨厌吗?)说:“哦,太好了,但它可以做 X 吗?”

因此,为了结合我对学习新事物的持续需求并在那个小编辑器上启用一些扩展,我想在其中添加一些简单的操作功能。因此,我想启用一些脚本。

我找到了一些关于ScriptEngine 的教程,这不是问题所在。问题是它似乎只通过 Rhino 支持 JavaScript。我通过apt-get 安装了它们:JRuby、Jython、Groovy,但 ScriptEngine 不认识它们。

我更喜欢在我的build.sbt 中删除一个依赖项。也许有人知道如何正确地做到这一点?

如果我继续使用 JavaScript,我可以安全地假设 Rhino 安装在每台带有 JDK 的机器上吗?

【问题讨论】:

  • 您可以放心地假设 Rhino 安装在每台 JDK 版本 6 或更高版本的机器上(版本 5 也可以工作)

标签: scala groovy jruby jython rhino


【解决方案1】:

这是一篇关于嵌入 Scala 解释器的文章。但是,这对于您正在做的事情可能有点过头了。

http://suereth.blogspot.com/2009/04/embedding-scala-interpreter.html

您也可以直接查看解释器的 scaladocs。

http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/compiler/scala/tools/nsc/interpreter/package.html

如果它们是非常简单的操作函数,您可以使用解析器组合器编写自己的语言。

http://www.codecommit.com/blog/scala/the-magic-behind-parser-combinators

【讨论】:

    【解决方案2】:

    Stir some Groovy into your Java apps 是一个 developerWorks 教程,它不依赖于 ScriptEngine,而是使用 groovy.lang.GroovyClassLoader - 我一直想尝试将其适应 Scala,但还没有完成(让我知道它是怎么回事)。

    在将其改编为 Scala 时,请记住:

    ClassLoader parent = CLEmbedGroovy.class.getClassLoader();
    

    是这样写的:

    val parent: ClassLoader = classOf[CLEmbedGroovy].getClassLoader() 
    

    在那篇文章的后面还有其他有趣的选项,例如GroovyScriptEngine。 SBT 方面,我认为 (source) 你只需要加入:

    val groovyAll1.0Jsr = "groovy" % "groovy-all-1.0-jsr" % "05"
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 2011-08-23
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多