Я знаю, что по умолчанию в Java нет так называемого метода eval
(который я называю «злым»). Это звучит плохо - знать, что у вас нет того, что есть у многих других. Но, что еще хуже, вы получаете уведомление о том, что вы не можете получить его.
Мой вопрос: что за этим стоит? Я имею в виду, что Google просто возвращает огромное количество старых данных и ложных причин - даже если есть ответ, который я ищу, я не могу отфильтровать его от людей, которые просто бросают общие слова-теги.
Меня не интересуют ответы, которые говорят мне, как это обойти; Я могу это сделать сам:
Пример файла . py
(в папке py
) содержимое:
def factorial(n):
return reduce(lambda x, y:x * y, range(1, n + 1))
И код Java:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("jython");
engine.eval(new FileReader("py" + java.io.File.separator + "sample.py"));
System.out.println(engine.eval("factorial(932)"));
Это эквивалентно:
String expr = "N[Integrate[E^(2 y^5)/(2 x^3), {x, 4, 7}, {y, 2, 3}]]";
System.out.println(MM.Eval(expr));
//Output: 1.5187560850359461*^206 + 4.2210685420287355*^190*I
Runtime.getRuntime (). exec
как root