第十一章 ObjectScript - 操作符
操作符
ObjectScript 中的运算符优先级严格是从左到右;在表达式中,运算按照它们出现的顺序执行。可以在表达式中使用显式括号来强制某些操作先于其他操作执行。
通常,即使并不严格需要括号,也会使用括号。很有用,因为它使代码的意图更加清晰。
Familiar Operators
ObjectScript 为常见活动提供以下运算符:
- 数学运算符:加法 (
+)、减法 (-)、除法 (/)、乘法 (*)、整数除法 (\)、模数 (#) 和求幂 (**) - 一元运算符:正 (
+) 和负 (-) - 字符串连接运算符 (
_) - 逻辑比较运算符:等于(
=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=) - 逻辑补码运算符 (
')
可以在任何逻辑值之前以及逻辑比较运算符之前使用它。
- 组合逻辑值的运算符:
AND(&&)、OR(||)
请注意,ObjectScript 还支持其中每种形式的较旧的、效率较低的形式:& 是 && 运算符的一种形式,而 ! 是 || 的一种形式操作员。可能会在现有代码中看到这些旧的形式。
Unfamiliar Operators
ObjectScript 还包括某些语言中没有等效项的运算符。最重要的如下:
- 模式匹配运算符 (
?) 测试其左操作数中的字符是否使用其右操作数中的模式。可以指定模式出现的次数、指定替代模式、指定模式嵌套等等。
例如,如果字符串 (testthis) 的格式为美国社会保障号,则以下代码将写入值 1 (true),否则写入 0。
Set testthis="333-99-0000"
Write testthis ?3N1"-"2N1"-"4N
这是确保输入数据有效性的重要工具,可以在类属性的定义中使用它。
- 二进制包含运算符 (
[) 返回1(真)或0(假),具体取决于右操作数中的字符序列是否是左操作数的子字符串。例如:
Set L="Steam Locomotive",S="Steam"
Write L[S
- 二进制跟随运算符 (
]) 测试左操作数中的字符是否按ASCII整理顺序位于右操作数中的字符之后。 - 运算符 (
]]) 之后的二进制排序测试左操作数是否按数字下标排序顺序排列在右操作数之后。 - 间接运算符 (
@) 允许对命令参数、变量名、下标列表或模式的部分或全部执行动态运行时替换。IRIS在执行相关命令之前执行替换。