表达式计算器#
系统配备了一个灵活的表达式计算器引擎,用于动态计算数值。应用程序的多个不同部分使用了表达式计算器,具体包括以下对象:
Note
此引擎不用于表达式计算器自动化控制器核心任务,后者使用另一个同样强大的引擎。请参阅任务 - 表达式计算机以获得该特定引擎的文档。
本节介绍表达式计算器的语法。
Info
表达式计算器不区分大小写。
运算符#
| 运算符 | 描述 | 用法 | 结果类型 |
|---|---|---|---|
&& | AND逻辑运算符 | 表达式 && 表达式 | 布尔值 |
and | AND逻辑运算符 | 表达式 and 表达式 | 布尔值 |
or | OR逻辑运算符 | 表达式 or 表达式 | 布尔值 |
| || | OR逻辑运算符 | 表达式 || 表达式 | 布尔值 |
not | NOT逻辑运算符 | not 表达式 | 布尔值 |
! | NOT逻辑运算符 | !表达式 | 布尔值 |
+ | 将两个表达式的值相加。如果其中一个表达式的结果是字符串形式,则结果为两个字符串的串联。 | 表达式 + 表达式 | 数值/字符串 |
* | 将两个表达式的值相乘 | 表达式 * 表达式 | 数字 |
- | 将两个表达式的值相减 | 表达式 - 表达式 | 数字 |
/ | 将两个表达式的值相除 | 表达式 / 表达式 | 数字 |
== | 测试两个表达式的值是否相等 | 表达式 == 表达式 | 布尔值 |
= | 测试两个表达式的值是否相等 | 表达式 = 表达式 | 布尔值 |
< | 测试一个表达式是否小于另一个表达式 | 表达式 < 表达式 | 布尔值 |
> | 测试一个表达式是否大于另一个表达式 | 表达式 > 表达式 | 布尔值 |
<= | 测试一个表达式是否小于或等于另一个表达式 | 表达式 <= 表达式 | 布尔值 |
>= | 测试一个表达式是否大于或等于另一个表达式 | 表达式 >= 表达式 | 布尔值 |
!= | 测试一个表达式是否与另一个表达式不同 | 表达式 != 表达式 | 布尔值 |
<> | 测试一个表达式是否与另一个表达式不同 | 表达式 <> 表达式 | 布尔值 |
% | 返回除法后余数的模块函数 | 表达式 % 表达式 | 数字 |
^ | 将一个表达式提升为另一个表达式的幂次(幂函数) | 表达式 ^ 表达式 | 数字 |
Table: 表达式计算器 - 运算符
函数#
数学#
| 函数 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
abs | 绝对值 | abs(表达式) | 数字 | abs(-3)=3 |
log | 返回给定数字的自然对数(底数为e) | log(表达式) | 数字 | log(e) = 1 |
log(x,y) | 返回基于给定底数计算得出的指定数字的对数 | log(表达式数字,表达式底数) | 数字 | log(1000,10) = 3 |
log10 | 返回给定数字以10为底数的对数 | log10(表达式) | 数字 | log10(100) = 2 |
exp | 返回e的给定数字的幂数 | exp(表达式) | 数字 | exp(1) = e |
cos | 返回给定数字的余弦值 | cos(表达式) | 数字 | |
sin | 返回给定数字的正弦值 | sin(表达式) | 数字 | |
tan | 返回给定数字的正切值 | tan(表达式) | 数字 | |
random | 返回最小值和最大值之间的随机数 | random(最小值,最大值) | 数字 |
Table: 表达式计算器 - 数学函数
字符串#
| 函数 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
& | 串联两个字符串 | 表达式str1 & 表达式str2 | 字符串 | |
substring | 返回新字符串,该新字符串是另一个字符串的子字符串。子字符串从指定下标处开始截取指定长度 | substring(表达式字符串, 表达式起始下标)或substring(表达式字符串, 表达式起始下标, 表达式长度) | 字符串 | substring("alfa",1,2) = "lf" |
length | 返回字符串的长度 | length(表达式)或expression.Length | 字符串 | |
lower | 将字符串转换为小写形式 | Lower(表达式) | 字符串 | |
upper | 将字符串转换为大写形式 | Upper(表达式) | 字符串 | |
replace | 替换一个字符串中的特定字符串 | Replace(表达式字符串, 要查找的表达式, 用于替换的表达式) | 字符串 | |
contains | 检查字符串是否包含特定子字符串 | Contains(表达式字符串, 表达式子字符串) | 字符串 | |
token | 获得字符串中的特定令牌 | token(表达式字符串, 表达式分隔符, 表达式令牌编号) | 字符串 | |
trim | 裁断给定字符串 | Trim(表达式字符串) | 字符串 |
Table: 表达式计算器 - 字符串函数
流程控制#
| 函数 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
if | 测试条件,如果条件为true,则返回一个表达式;如果条件为false,则返回另一个表达式 | if 表达式 then 表达式 else 表达式 | 对象 | |
if | 测试条件,如果条件为true,则返回一个表达式;如果条件为false,则返回另一个表达式 | if(条件,then子句,else子句) | 对象 | if(10 * 30; 100; 20) = 20 |
in | 验证一个值是否包含在列表中 | 表达式值 in 表达式列表 | 布尔值 | 10 in array(1,6,7,10) = true |
decode | 解析一个值的可能值列表 | decode(表达式值, 表达式测试1, 表达式结果1, ..., 表达式测试N, 表达式结果N, 表达式默认值) | 对象 | decode("a", "b", 10, "a", 20, 30) = 20 |
Table: 表达式计算器 - 流程控制函数
变量和对象#
| 函数 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
array | 创建数组 | array(表达式1, ..., 表达式N) | Object[] | |
arraysize | 返回数组或字符串的长度 | arraysize(表达式) | 数字 | |
new | 创建业务对象的新实例 | new 对象名称() | 对象 | New Material() |
| $ | 获得作为运行时输入提供的变量的值 | $变量名称 | 对象 | $ xml |
| $ | 获得作为运行时输入提供的变量的值 | $[表达式] | 对象 | $ [$vName] $ ["Material Type"] |
. | 路径导航器 | 表达式.(表达式) | 对象 | $ Material.("Name") |
. | 路径导航器 | 表达式.表达式 | 对象 | $ Material.Step.Name |
Table: 表达式计算器 - 变量和对象函数
环境#
| 函数 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
host | 获取当前主机名 | 主机 | 字符串 | |
domain | 获取当前用户域名 | 域 | 字符串 | |
env | 获取给定环境变量的值 | env(表达式变量名称) | 字符串 | |
now | 获取当前日期和时间(c# -> DateTime.Now) | now | 日期时间 | |
pid | 获取应用程序进程ID | PID | 数字 | |
user | 获取当前用户名 | user | 字符串 |
Table: 表达式计算器 - 环境函数
常量#
| 常量 | 描述 | 用法 | 结果类型 | 示例 |
|---|---|---|---|---|
false | 返回false | false | 布尔值 | false |
true | 返回true | true | 布尔值 | true |
pi | 返回PI常量的值 | pi | 数字 | pi |
null | 表示空值的关键字 | null | 空 | null |
e | 表示自然对数底数 | e | 浮点型 | e |
Table: 表达式计算器 - 常量