斯卡拉中的“eval”

2022-08-31 17:22:19

Scala可以用来编写Java应用程序的脚本吗?

我需要从Java加载一段Scala代码,为其设置执行范围(主机应用程序公开的数据),对其进行评估并从中检索结果对象。

Scala文档显示了从Java调用编译的Scala代码是多么容易(因为它变成了常规的JVM字节码)。

但是,我如何动态地计算Scala表达式(从Java或如果更容易,从Scala内部)?

对于许多其他语言,有javax.scripting接口。Scala似乎不支持它,我在Java / Scala互操作性文档中找不到任何不依赖于提前编译的东西。


答案 1

答案 2

Scala不是一种脚本语言。它可能看起来有点像脚本语言,人们可能会为此目的提倡它,但它并不适合JSR 223脚本框架(面向动态类型语言)。为了回答你最初的问题,Scala没有函数,就像Java没有.这样的函数对于这两种语言中的任何一种都没有意义,因为它们本质上是静态的。evaleval

我的建议是:重新思考你的代码,这样你就不需要了(你很少这样做,即使在有它的语言中,比如Ruby)。或者,也许您根本不想在应用程序的这一部分中使用Scala。如果你真的需要,试试使用JRuby。JRuby,Scala和Java很好地融合在一起。在Java中拥有系统的一部分,在Scala中拥有一部分,在Ruby中拥有另一部分(需要的部分)是很容易的。evalevaleval


推荐