2

我正在尝试使用 scala 解释器中的 IMain 方法来运行已转换为字符串的函数。但是我无法将用户创建的类导入解释器。

例如,您可以轻松地从 scala 数据库中导入类,例如:

val m = new IMain()
m.interpret("import scala.math.sin")
m.interpret("sin(10)")

只要解释器​​正在运行,这个导入就会一直存在。但是,我无法找到一种方法来导入我创建的类和对象(或任何私有库):

m.interpret("import sounder.Sounder.play"
m.interpret("play(t=>50*sin(2*Pi*t*400),0,10")

(play是一种通过电脑声卡播放声音的方法)

我已经尝试使用解释器中的所有方法,但似乎都不起作用。我想出的唯一解决方案是将类文件转换为一行 with ; 将每一行分开并通过解释运行,但即使这样也存在阻止它编译的问题。

是否有允许输入到解释器的方法,或者是否有另一个过程允许scala解释器处理字符串。

感谢您的帮助,我在 Windows 7 计算机上运行 Scala 2.9.2。

4

1 回答 1

0

您是否尝试过以下方法:

val m = new IMain() {
   override protected def parentClassLoader = sounder.Sounder.getClassLoader
}

在 Scala 2.10 中,您可以执行以下操作:

val s = new tools.nsc.Settings()
s.embeddedDefaults[sounder.Sounder]
val m = new IMain(s)

如果您通过sbt run. 该手册会告诉您需要添加fork in run := true到您的build.sbt. 中,但恐怕这对自定义库没有帮助。

于 2013-01-19T13:47:41.370 回答