如果我像这样运行 GroovyScript:
def gs=new GroovyShell()
gs.setVariable('square',{x->x*x})
gs.evaluate("print square(10)")
它工作得很好。问题是我希望“Square”函数也被编译。我试过这个:
def gs=new GroovyShell()
gs.setVariable('square',gs.parse("{x->x*x}"))
gs.evaluate("print square(10)")
但它不起作用,我很确定这是因为 gs.parse 返回的“脚本”对象不像闭包——但我不想更改第二个字符串的语法——如果我做了会有很多解决方案......
有任何想法吗?
编辑:写完这篇文章后,我意识到可以简单地将两个字符串连接起来并解析一次,所以每次我想运行一个使用 square() 函数的脚本时,我都必须在前面加上文本“def square (x){x*x)\n" 到脚本...
我可以做到这一点,但它似乎有点古怪,所以我仍然对其他答案持开放态度。