表达式
表达式根据变量值和文字值计算值。
- 算术运算
- 关系操作
- 逻辑操作
- 连接
- 长度
- 优先级
算术运算
对数值执行算术运算。如果在算术运算中使用字符串值,则将其转换为数字 — 如果失败,则返回错误。
a+b | 添加 A.和 B |
a-b | 从 A.中减去 B |
a*b | 乘以 A.和 B |
a/b | 将 A.除以 B |
a%b | 模=a-数学楼层(a/b)*b |
a^b | 将 A.提高到 B功率; B可以是任意数字 |
-a | 否定一个 |
关系操作
关系运算比较两个值,如果关系满足,则返回 符合事实的如果不满足,则返回 错误的关系操作可以在任何类型的值之间执行。如果这些值不是相同的类型,则返回 错误的数字以通常的方式进行比较。使用当前区域设置的排序序列对字符串进行比较。
A. | A.等于 B |
a〜b | A.不等于 B |
a | A.小于 B |
a>b | A.大于 B |
a<=b | A.小于或等于 B |
a>=b | A.大于或等于 B |
逻辑操作
逻辑操作传统上是在布尔值上执行的,但在这种语言中,它们可以在任意两个值上执行。无和 错误的被认为是假的,任何其他值都被认为是真的。逻辑运算使用短距求值,其中如果第一个值确定操作的结果,则不评估第二个值。
A.和 B | 如果 A.是假或零,则返回其他返回 B |
A.或 B | 如果 A.不是假的,不是零,那么返回一个其他返回 B |
不是 | 如果 A.不是假或零返回 错误的否则返回 符合事实的 |
和和或操作可用于表达式中的条件评估:
A.或 B | 如果 A.未初始化(无)则可用于提供默认值 B这对于函数中的可选参数非常有用。 |
A.和 B或 C | 可以用来根据条件 A.选择非零 B或 C如果 A.为 符合事实的那么 A.和 B返回 b、 b或 C返回 B如果 A.为假,那么 A.和 B返回假和 错误的或 C返回 C这相当于一个? b:c在 C编程语言。 |
连接
字符串连接是 s1..s2这会创建一个足够大的新字符串以容纳 s1和 s2的内容,并将内容复制到新字符串中。如果 s1或 s2不是字符串,则会出现错误。请注意,重复连接可能会有相当大的复制开销。如果您通过一次连接一个字节来构建 N个字节的字符串,这将复制 n*(n+1)/2个字节。为了获得更好的性能,您可以将一个字符串的片段连接到一个表中(稍后讨论),然后使用 表1.concat()函数。这方面的一个示例显示在组合标题 () 示例中。
长度
字符串 s的长度由 #s返回。# 运算符也与数组表一起使用,如下文所述。
优先级
运算符优先级决定在表达式中执行操作的顺序,优先级较高的操作先于优先级较低的操作。优先顺序可以像往常一样被括号覆盖。例如,在a+b\*c
, * 的优先级高于 +,因此表达式评估为a+(b\*c)
。
最高 | ^ |
- | 不是 #-(一元) |
- | * / % |
- | .. |
- | = ~= < > <= >= |
- | 和 |
最低 | 或 |
具有相同优先级的操作从左到右(左关联)执行,但是从右到左执行的 ^ 和.. 除外(右关联)。所以一个 ^ b^c被评估为 ^(b^c)