Scala JSR 223导入类型/类

时间:2014-12-08 18:21:55

标签: scala jsr223

以下示例失败,因为无法找到Stuff的定义:

package com.example

import javax.script.ScriptEngineManager

object Driver5 extends App {
  case class Stuff(s: String, d: Double)
  val e = new ScriptEngineManager().getEngineByName("scala")
  println(e.eval("""import Driver5.Stuff; Stuff("Hello", 3.14)"""))
}

我无法找到允许我在eval语句中使用自己的类的任何import语句。难道我做错了什么?如何在eval期间使用一个导入类?

编辑:澄清示例代码以获得更直接的答案。

1 个答案:

答案 0 :(得分:0)

脚本引擎不知道上下文。它肯定无法访问脚本中的所有局部变量和导入,因为它们在类文件中不可用。 (好吧,变量名可以选择作为调试信息使用,但实际上不可能将它们用于此目的。)

我不确定是否有特殊的API。各种语言的导入都不同,因此提供适合所有语言的API可能很困难。

您应该能够将导入添加到eval-ed字符串中。我不确定是否有更好的方法来做到这一点。