1

これが取引です。私はこの記事を読み、 Rhinoを使い 始めました。これまでのところ、関数を呼び出す方法と、関数を返す方法を学びました。私ができないことは、関数のパラメーターを渡すことです。これが私のコードです:

ScriptEngineManager engineMgr = new ScriptEngineManager();
ScriptEngine engine = engineMgr.getEngineByName("ECMAScript");

String js = "";
js += "function add(a, b) {";
js += " var sum = parseFloat(a) + parseFloat(b);";
js += " println(sum);";
js += "}";

engine.put("a", 3);
engine.put("b", 5);

Object returnn = null;
try {
    engine.eval(js);

    Invocable invocableEngine = (Invocable) engine;
    returnn = invocableEngine.invokeFunction("add");
} catch (ScriptException e) {
    System.out.println("Script error.");
} catch (NoSuchMethodException e) {
    System.out.println("Method error.");
}

System.out.println(returnn);

例外はまったく発生しませんが、戻り値はNaNとして返されます。aとb(パラメータ)を印刷してみましたが、常にnullになります。これが関数を呼び出すための最良の方法ではない場合は、いくつかの便利なスレッドを教えてください。(自分では見つけられなかったもの)

事前にTYVM

4

1 に答える 1

1

これは私のために働きます:

Object params[] = {1,2,3};
Invocable invocable = (Invocable) script.getEngine();
invocable.invokeFunction("myFunction", params);
于 2012-05-21T11:53:58.257 に答える