QLExpress规则表达式–instanceof
最近刚接触到QLExpress组件,通过学习接触到很多规则表达式,下面简单分析一下如何用QLExpress脚本语言实现instanceof操作。请看下面详细的代码:
public class InOperatorTest {
@Test
public void testAllByFunction() throws Exception {
ExpressRunner runner = new ExpressRunner();
runner.addOperator("widelyin", new OperatorIn("widelyin") {//
@Override
public Object executeInner(Object[] list) throws Exception {
if (list[0] == null) {
return false;
}
return super.executeInner(list);
}
});
//注意可以使用 data in (2,3,4) ,但无法使用data widelyin (2,3,4),因为默认addOperator的是二元操作符,
// com.ql.util.express.instruction.InInstructionFactory对语法树做了特殊处理
String exp = "data widelyin [2,3,4]";
IExpressContext<String, Object> context = new DefaultContext<>();
context.put("data", 2);
Object result = runner.execute(exp, context, null, false, true);
System.out.println(result);
}
}
测试结果如下:
这个例子重新定义instanceof操作符,并起名为widelyin ,实现相同的操作。