MVEL を使用してカスタムのプリコンパイル済み関数を定義し、その関数を別のコンパイル済み式で使用することはできますか? 次のことを試してみると:
MVEL.compileExpression("function hello() { System.out.println(\"Hello!\"); hello(); return x * y;");
Exception in thread "main" [Error: duplicate function: hello]
2回目に実行しようとすると取得します。
式自体ではなく、何らかのコンテキストで関数を宣言する必要があるようです。しばらく ParsedContext で遊んでいましたが、常にException in thread "main" [Error: unable to access property (null parent): hello]
.
インターネットには、さまざまな MVEL 言語の使用に関するトピックをカバーするチュートリアルがたくさんありますが、そのような埋め込みトピックの文書化は非常に不十分です。私が間違っていることを教えてください。
PS Javaからいくつかの機能を実行したくありません。MVEL で動的に定義する必要があります。