0

我有一些代码可以成功加载和编译脚本。这很好用。不过,接下来,我希望能够在编译后的脚本中调用一个函数。不幸的是,我看不到任何方法可以使已编译的脚本可调用。

Compilable compEngine = (Compilable)engine;
compiledScripts.put(filename, compEngine.compile(new InputStreamReader(in)));
compiledScripts.get(filename).eval();
//All works until this point. The compiled script does not seem to be invokable.
Invocable inv = (Invocable) compiledScripts.get(filename);
inv.invokeFunction("onLoad");

有没有办法做到这一点?如果是这样,怎么做?如果不是,那么在不编译脚本时,它们通常会对性能造成多大影响?

4

1 回答 1

1

我找到了我的问题的答案。这实际上是一个非常简单的改变。

这一行:

Invocable inv = (Invocable) compiledScripts.get(filename);

需要改为:

Invocable inv = (Invocable) compiledScripts.get(filename).getEngine();

这将返回编译脚本正在运行的引擎,从而让我们从编译脚本中调用函数。

于 2013-07-08T22:56:46.653 回答