このように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によって返される「Script」オブジェクトがクロージャーのように機能しないためだと確信しています。ただし、2番目の文字列の構文を変更したくない場合は私はたくさんの解決策があるだろうと思いました...
何か案は?
編集:これを書いた後、2つの文字列を単純に連結して一度解析することが可能であることに気付きました。そのため、square()関数を使用するスクリプトを実行するたびに、「defsquare」というテキストを先頭に追加する必要があります。 (x){x * x)\n"スクリプトに..
私はこれを行うことができますが、それは少し薄っぺらなように見えるので、私はまだ他の答えを受け入れています。