【发布时间】:2015-03-31 16:23:06
【问题描述】:
我找到了一个 Scala 运行时脚本的示例代码来回答 Generating a class from string and instantiating it in Scala 2.10,但是该代码对于 2.11 来说似乎已经过时 - 我找不到任何与 build.setTypeSignature 对应的函数。即使它有效,代码似乎也难以阅读和理解。
如何在 Scala 2.11 中编译和执行 Scala 脚本?
让我们假设我想要以下:
- 定义几个变量(名称和值)
- 编译脚本
- (可选改进)更改变量值
- 执行脚本
为简单起见,请考虑以下示例:
我想定义以下变量(以编程方式,来自代码,而不是来自脚本文本):
val a = 1
val s = "String"
我想要编译以下脚本并在执行时从它返回一个 String 值 "a is 1, s is String":
s"a is $a, s is $s"
我的函数应该是什么样子的?
def setupVariables() = ???
def compile() = ???
def changeVariables() = ???
def execute() : String = ???
【问题讨论】:
-
注意:
build.setTypeSignature已替换为internal.reificationSupport.setInfo。另请参阅Changes in Scala 2.11 - 段落 如何使您的 2.10.x 宏在 2.11.0 中工作。
标签: scala reflection scripting compilation