首页 > 编程知识 正文

qlexpress 入门,qlexpress可视化界面

时间:2023-05-05 00:45:42 阅读:274386 作者:945

目录

目录自定义函数拓展操作符 替换关键字Operator 宏定义导航

自定义函数

脚本中定义function

/** * 自定义函数测试 * @throws Exception if any */@Testpublic void defineFunctionTest() throws Exception { final String express = "function add(int a,int b){n" + " return a+b;n" + "};n" + "n" + "function sub(int a,int b){n" + " return a - b;n" + "};n" + "n" + "a=10;n" + "return add(a,4) + sub(a,9);"; ExpressRunner runner = new ExpressRunner(); DefaultContext<String, Object> context = new DefaultContext<>(); Object r = runner.execute(express, context, null, true, false); Assert.assertEquals(15, r);} 拓展操作符 替换关键字 @Testpublic void replaceKeywordTest() throws Exception { ExpressRunner runner = new ExpressRunner(); runner.addOperatorWithAlias("如果", "if", null); runner.addOperatorWithAlias("则", "then", null); runner.addOperatorWithAlias("否则", "else", null); DefaultContext<String, Object> context = new DefaultContext<>(); final String express = "如果(1>2){ return 10;} 否则 {return 5;}"; Object r = runner.execute(express, context, null, true, false); Assert.assertEquals(5, r);} Operator JoinOperator.java import com.ql.util.express.Operator;/** * @author houbinbin */public class JoinOperator extends Operator { private static final long serialVersionUID = 5653601029469696306L; @Override public Object executeInner(Object[] objects) { java.util.List result = new java.util.ArrayList(); for (Object object : objects) { if (object instanceof java.util.List) { result.addAll(((java.util.List) object)); } else { result.add(object); } } return result; }} OperatorTest.java @Testpublic void addOperatorTest() throws Exception { ExpressRunner runner = new ExpressRunner(); DefaultContext<String, Object> context = new DefaultContext<>(); runner.addOperator("join", new JoinOperator()); Object r = runner.execute("1 join 2 join 3", context, null, false, false); Assert.assertEquals(Arrays.asList(1,2,3), r);}@Testpublic void replaceOperatorTest() throws Exception { ExpressRunner runner = new ExpressRunner(); DefaultContext<String, Object> context = new DefaultContext<>(); runner.replaceOperator("+", new JoinOperator()); Object r = runner.execute("1 + 2 + 3", context, null, false, false); Assert.assertEquals(Arrays.asList(1,2,3), r);}@Testpublic void addFunctionTest() throws Exception { ExpressRunner runner = new ExpressRunner(); DefaultContext<String, Object> context = new DefaultContext<>(); runner.addFunction("join",new JoinOperator()); Object r = runner.execute("join(1, 2, 3)", context, null, false, false); Assert.assertEquals(Arrays.asList(1,2,3), r);} 宏定义 @Testpublic void macroTest() throws Exception { ExpressRunner runner = new ExpressRunner(); runner.addMacro("计算平均成绩", "(语文+数学+英语)/3.0"); runner.addMacro("是否优秀", "计算平均成绩>90"); IExpressContext<String, Object> context = new DefaultContext<>(); context.put("语文", 88); context.put("数学", 99); context.put("英语", 95); Boolean result = (Boolean) runner.execute("是否优秀", context, null, false, false); Assert.assertTrue(result);} 导航

QLExpress 系列导航

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。