1. TRUE函数
TRUE 函数可直接返回逻辑值 true。
2. 函数用法
TRUE()
3. 函数示例
TRUE 函数一般不会作为函数单独使用,可与其他函数一起使用,或作为判断逻辑的结果。如,判断字段值是否为空时,设置公式为IF(ISEMPTY(方案选择)==TRUE(),"未选择","已选择")
,为空时值为TRUE(),即返回“未选择”,反之返回“已选择”。
4. 代码实战
首先我们在function包下创建logic包,在logic包下创建TrueFunction类,代码如下:
package com.ql.util.express.self.combat.function.logic;import com.ql.util.express.Operator;/*** 类描述: TRUE函数** @author admin* @version 1.0.0* @date 2023/11/21 17:30*/
public class TrueFunction extends Operator {public TrueFunction(String name) {this.name = name;}@Overridepublic Object executeInner(Object[] objects) throws Exception {return Boolean.TRUE;}
}
把TrueFunction类注册到公式函数入口类中,代码如下:
package com.ql.util.express.self.combat.ext;import com.ql.util.express.ExpressRunner;
import com.ql.util.express.IExpressResourceLoader;
import com.ql.util.express.parse.NodeTypeManager;
import com.ql.util.express.self.combat.function.logic.*;/*** 类描述: 仿简道云公式函数实战入口类** @author admin* @version 1.0.0* @date 2023/11/21 15:29*/
public class FormulaRunner extends ExpressRunner {public FormulaRunner() {super();}public FormulaRunner(boolean isPrecise, boolean isTrace) {super(isPrecise,isTrace);}public FormulaRunner(boolean isPrecise, boolean isStrace, NodeTypeManager nodeTypeManager) {super(isPrecise,isStrace,nodeTypeManager);}public FormulaRunner(boolean isPrecise, boolean isTrace, IExpressResourceLoader iExpressResourceLoader, NodeTypeManager nodeTypeManager) {super(isPrecise,isTrace,iExpressResourceLoader,nodeTypeManager);}@Overridepublic void addSystemFunctions() {// ExpressRunner 的内部系统函数super.addSystemFunctions();// 扩展公式函数this.customFunction();}/**** 自定义公式函数*/public void customFunction() {// AND函数this.addFunction("AND",new AndFunction("AND"));// IF函数this.addFunction("IF",new IfFunction("IF"));// IFS函数this.addFunction("IFS",new IfsFunction("IFS"));// XOR函数this.addFunction("XOR",new XorFunction("XOR"));// TRUE函数this.addFunction("TRUE",new TrueFunction("TRUE"));// FALSE函数this.addFunction("FALSE",new FalseFunction("FALSE"));}
}
创建测试用例
package com.ql.util.express.self.combat;import com.ql.util.express.DefaultContext;
import com.ql.util.express.self.combat.ext.FormulaRunner;
import org.junit.Test;/*** 类描述: 实战测试类** @author admin* @version 1.0.0* @date 2023/11/21 15:45*/
public class CombatTest {@Testpublic void TRUE() throws Exception{FormulaRunner formulaRunner = new FormulaRunner(true,true);// 创建上下文DefaultContext<String, Object> context = new DefaultContext<>();String express = "IF(1<2,TRUE(),\"已选择\")";Object object = formulaRunner.execute(express, context, null, true, true);System.out.println(object);}}
运行结果