我GroovyShell
在我的程序中用作“表达式评估器/引擎”。它接受两个输入:(a) 一个或多个初始化脚本 (b) 用户定义的脚本。然后在运行时将两者连接为一大块脚本(文本)并提供给 shell。
String initScripts = getFromDB()
String userScript = getFromUser()
def shell = new GroovyShell()
output = shell.evaluate(initScripts + userScript)
上面的代码将循环运行,其中的内容userScript
会有所不同。
到目前为止,仅包含可能在(例如)中引用的initScripts
变量定义(例如)。def $yyyy = new Date().format('yyyy')
userScript
print "$yyyy 001"
有没有更有效的方法呢?(例如重用外壳,如何?)因为现在它非常慢。
编辑: Groovy 是必须的。请不要推荐其他脚本引擎。
编辑:我在想 GroovyShell 是否可以做到这一点(伪代码):
def shell = new GroovyShell()
shell.evaluate(initScripts)
for each userScript in DB {
shell.put(userScript )
def result = shell.evaluateThat()
println "Result is $result"
}
这可能吗?(上次我用谷歌搜索这是不可能的,但我希望我错了)