1
如果我跑GroovyScript這樣的:GroovyShell一個編譯字符串調用另一個
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平方(x){x * x)\ n」給腳本...
我可以做到這一點,但它似乎有點flakey,所以我仍然對其他答案開放。
非常酷,謝謝。是的,這東西太有趣了。 –