携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第44天,点击查看活动详情
运算符符号表
ObjectScript包括以下运算符:
| 操作符 | 执行的操作 | ||||
|---|---|---|---|---|---|
. | 对象属性或方法访问。 | ||||
() | 数组索引或函数调用参数。 | ||||
+ | 加法(二元)、正(一元) | ||||
– | 减法(二元)、负数(一元) | ||||
* | 乘法 | ||||
/ | 除法 | ||||
\ | 整除 | ||||
** | 指数 | ||||
# | 余数 | ||||
_ | 连接符 | ||||
' | 逻辑补码(NOT) | ||||
= | 测试是否相等、赋值 | ||||
'= | 不相等 | ||||
> | 大于 | ||||
'> ,<= | 不大于(小于或等于) | ||||
< | 小于 | ||||
'< ,>= | 不小于(大于或等于) | ||||
[ | 包含 | ||||
] | 遵循 | ||||
]] | 排序后 | ||||
& ,&& | 逻辑AND(&&是与) | ||||
! ,` | ` | 逻辑或(` | `是或) | ||
@ | 间接 | ||||
? | 模式匹配 |
运算符优先
- ObjectScript中的运算符优先级严格从左到右;在表达式中,操作按出现的顺序执行。这与其他语言不同,在其他语言中,某些运算符具有比其他运算符更高的优先级。可以在表达式中使用括号,以强制某些操作先于其他操作进行。
w "1 + 2 * 3 - 4 * 5 = ",1 + 2 * 3 - 4 * 5,!
w "1 + (2 * 3) - 4 * 5 = ",1 + (2 * 3) - 4 * 5,!
w "1 + (2 * (3 - 4)) * 5 = ",1 + (2 * (3 - 4)) * 5,!
w "1 + (((2 * 3) - 4) * 5) = ",1 + (((2 * 3) - 4) * 5),!
- 一元运算符优先于二元算术运算符。 首先执行数字表达式并执行任何一元操作。然后,对表达式求值并生成结果。
w "-1 - 2 = ", -1 - 2,!
w "-1 + -2 = ", -1 + -2,!
w "-(1 - --2) = ", -(1 - 2),!
- 可以通过使用圆括号将表达式相互嵌套来更改计算顺序。圆括号将包含的表达式(算术表达式和关系表达式)分组,并控制对表达式执行操作的顺序。
w ((4 + 7) > (6 + 6)),!
w (4 + 7 > 6 + 6),!
w 3 && 2 = 1,!
w 1 = 3 && 2,!
s var = 10, target = 9
if var = 10 * (target < 10) {
w !,"true"
} else {
w !,"false"
}
逻辑比较运算符
逻辑表达式
逻辑表达式最常用于:
- if命令
- $select函数
- 后置条件表达式
在布尔运算中,任何计算结果为非零数值的表达式都返回布尔值1(True)。任何计算结果为零数值的表达式都返回布尔值0(FALSE)。Caché将非数字字符串计算为具有零数值。
- 可以使用逻辑运算符组合多个布尔逻辑表达式。与所有Caché表达式一样,它们严格按照从左到右的顺序进行计算。这里有两种类型的逻辑运算符:常规逻辑运算符(
&和!)。和短路(双)逻辑运算符(&&和||)。 - 当使用双逻辑运算符组合逻辑表达式时,Caché只计算确定布尔结果所需的表达式。例如,如果有多个AND测试,则返回0的第一个表达式确定总体布尔结果。不计算此表达式右侧的任何逻辑表达式。可以避免不必要的表达式计算耗时。
if $$One() & $$Two() {
w !,"true"
} else {
w !,"false"
}
if $$One() && $$Two() {
w !,"true"
} else {
w !,"false"
}
if $$One() , $$Two() {
w !,"true"
} else {
w !,"false"
}
One()
w !,"one"
q 0
Two()
w !,"two"
q 1
Not运算符(')
- NOT运算符反转布尔操作数的真值。如果操作数为TRUE(1),则NOT运算符赋值FALSE(0)。如果操作数为FALSE(0),NOT运算符赋值TRUE(1)。
w '0,!
w '1,!
w 3 > 5,!
w 3 '> 5,!
算术运算符
- 一元运算符,对其单个操作数进行数值解释。如果其操作数有字符串值,则将其转换为数字值。它通过将字符串的字符顺序解析为数字来实现这一点,直到它遇到无效字符。然后,它返回字符串的任何前导部分是格式良好的数字。
w + "32 apple",!
w - "64 banana" _ "orange",!
加法运算符(+)
- 加法运算符产生两个数值解释的操作数之和。它使用任何前导有效数字字符作为操作数的数字值,并生成操作数的数字值之和的值。
w "32 apple" + "32 apple",!
w 32 + 32
减法运算符(-)
- 减法运算符产生两个数值解释的操作数之间的差值。它将任何前导的有效数字字符解释为操作数的数字值,并生成减法后的余数的值。
w 5211314 - 7758521,!
w "32 apple" - "two apple",!
乘法运算符(*)
- 乘法产生两个数值解释的操作数的乘积。它使用任何前导数字字符作为操作数的数字值,并生成乘积结果。
w 521.1 * 2,!
w "32 apple" * "2 apple",!
除法运算符(/)
- 除法产生将两个数值解释的操作数相除的结果。它使用任何前导数字字符作为操作数和乘积的数字值,结果就是商。
w 1 / 1.5,!
w "32 apple" / "2 apple",!
- 操作数没有前导数字字符,则认为其值为零。不允许将数字除以零。返回
<Divide>错误消息.
w "32 apple" / "apple",!
w 1 / 0,!