Evaluator demo
Инструмент оценки спиртных напитков основан на реализации компилятора Java. В режиме «перезапись кэша» производительность близка к исходному коду Java. Однако, когда существует «бесконечно много вариантов» выражений, кэш становится недействительным и генерируется бесконечное количество классов, после чего возникает ошибка OOM.
Рассмотрим инструмент оценки выражений:
public class DemoApp {
public static void main(String[] args) throws Exception {
//Basics
System.out.println(Exprs.eval("1+1"));
//Advanced
CodeSpec code1 = new CodeSpec("aa + 22").parameters(new ParamSpec("aa", Integer.class));
System.out.println(Exprs.eval(code1, 1)); //=> 23
Map<String, Object> context2 = new HashMap<>();
context2.put("bb", 3);
System.out.println(Exprs.eval("bb + 22", context2)); //=>25
System.out.println(Exprs.eval(new CodeSpec("Math.min(1,2)").imports(Math.class))); //=>1
}
}
public class DemoApp {
public static void main(String[] args) throws Exception {
//Basics
Scripts.eval("System.out.println(\"hello word\");");
//Advanced (Don't add public if you have an inner class)
CodeSpec code1 = new CodeSpec("import java.util.HashMap;\n\n"+
" class Demo {\n" +
" public String hello(String word) {\n" +
" return word;\n" +
" }\n" +
" }\n" +
"\n" +
" Demo demo = new Demo();\n" +
" return demo.hello(name);") //name is an external parameter
.parameters(new ParamSpec("name", String.class))
.returnType(String.class);
System.out.println(Scripts.eval(code1, "noear")); //=>noear
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )