例如:
int x = 4;
int y = 5;
int z = (x * y);
现在我想将(x * y)
变成一个函数,我发现 Dijkstra的双栈可以提供帮助;但问题是,单个表达式将被多次使用,每次计算表达式时,系统将实例化两个堆栈并使用循环结构,因此效率低下。那么有更好的方法来解决这个问题吗?
答案 0 :(得分:1)
Java包括ScriptEngine
(另请参阅Oracle Nashorn)。您可以使用ScriptEngine
机制嵌入python,ruby,scheme等。但我们可以使用JavaScript构建,
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
try {
engine.eval("function multiply(x, y) { return x * y; }");
System.out.println(engine.eval("multiply(3, 2);"));
} catch (ScriptException e) {
e.printStackTrace();
}
得到(作为输出)
6