操作符号 是表示执行操作或条件评估的符号。
有道理
逻辑操作器根据指定参数的Boolean值返回值。如果参数不是 false 或 nil ,那么操作器将其评估为 true 。与许多其他语言不同,Luau在1> conditionals1>中考虑零和空白字符串为 4> true4> 。下表总结了
操作员 | 描述 |
---|---|
和 | 仅评论为 真 只有两个条件是真的 |
或 | 评估为 是否为真 如果条件为真 |
不是 | 评估为反对条件 |
和
二进制操作符 and 返回其中一个参数。如果第一个参数评估为 true ,那么它将返回第二参数。否则,它将返回第一个参数。
print(4 and 5) -- 5print(nil and 12) -- 无print(false and 12) -- 否print(false and true) -- 否print(false and false) -- 否print(true and false) -- 否print(true and true) -- true
您可以使用 and 来在 控制结构 中测试多个条件,例如 if 声明和 3> 4> while4> 循环。例如,以下 6> if6> — 9> then9> 声明测试两个条件都是真的:
local pasta = truelocal tomatoSauce = trueif pasta == true and tomatoSauce == true thenprint("We have spaghetti dinner")elseprint("Something is missing...")end-- Output: We have spaghetti dinner
或
二进制操作符 or 返回两个参数之一。如果第一个参数评估为 true ,则返回第一个参数。否则,它将返回第二参数。
local y = x or 1print(y) -- 1 因为 x 不存在,因此它是零local d = falselocal e = d or 1print(e) -- 1 因为 d 是 falseprint(4 or 5) -- 4print(nil or 12) -- 12print(false or 12) -- 12print(false or true) -- 真的print(false or false) -- 否print(true or false) -- 真的print(true or true) -- true
您可以使用 or 来在 控制结构 中执行复杂的逻辑测试。例如,以下 if — 2>然后2> 声明测试是否两个条件是否真或 5>或5> 是否是第三个条件是否真:
local pasta = falselocal tomatoSauce = truelocal garlicBread = trueif (pasta == true and tomatoSauce == true) or garlicBread == true thenprint("We have either spaghetti dinner OR garlic bread")elseprint("Something is missing...")end-- Output: We have either spaghetti dinner OR garlic bread
不是
单元操作器 not 返回参数的反向Boolean值。如果参数为 false 或 nil ,它将返回 1> true1> 。否则,它将返回 4> force4> 。
print(not true) -- 否print(not false) -- 真的print(not nil) -- 真的print(not "text") -- 否print(not 0) -- false
您可以使用 not 操作来触发一个条件或循环,如果变量是 false 或 nil 。
local nilVariable -- 变量声明了,但没有值,所以它是零local falseVariable = false -- 变量声明为 false 值if not nilVariable thenprint(nilVariable) -- 输出 “nil” 因为 nil 不是真实的endif not falseVariable thenprint(falseVariable) -- 输出“否”,因为“否”不是真实end
您还可以使用 not 操作测试多个条件声明的相反。在以下代码示例中, if — then 三个条件测试,它既不是三大于四,也不是五大于四。
local three = 3local four = 4local five = 5if not (three > four or five < four) thenprint("Three is less than 4 and five is greater than 4.")end-- Output: Three is less than 4 and five is greater than 4.
关系
关联操作比较两个参数,并且返回一个 button 或一个 true 或 false 。
操作员 | 描述 | 例子 | 关联的 metameth 方法 |
---|---|---|---|
== | 等于 | 3 == 5 → 错误 | __eq *** |
! | 不等于 | 3 5 → 是的 | |
> | 大于 | 3 > 5 → 不是真的 | |
<) | 少于 | 3 < 5 → 是的 | __lt |
≥ | 大于或等于 | 3 >= 5 → | |
少于或等于 | 3 <= 5 → 真的 | __le |
arithmetic
Lua 支持常见的二进制操作以及乘法和单项负数。
操作员 | 描述 | 例子 | 关联的 metameth 方法 |
---|---|---|---|
+ | 添加 | 1 + 1 = 2 | __add |
-) | 减法 | 1 - 1 = 0 | __sub |
* | 多次复制 | 5 * 5 = 25) | __mul |
/) | 分割 | 10 / 5 = 2 | __div |
// | 楼层分区 | 10 // 4 = 2-10 // 4 = -3 | __idiv |
^ | 扩展 | 2 ^ 4 = 16) | __pow |
% | 模块 | 13 % 7 = 6 倍 | __mod |
-) | 单向否定 | -2 = 0 - 2 | __unm) |
复合分配
您可以使用复合命令来设置一个变量与结果操作中的相同变量。
在复合命令中,操作在一个指定的表中生成一个随机索引时发生一次。例如,如果表中的某个表达生成一个随机索引,Luau 将使用同一的索引为操作和分配。
在以下示例中,假设 local x = 3。
操作员 | 操作 | 例子 | 新值为 x |
---|---|---|---|
+= | 添加 | x + 2 | 5 |
)- | 减法 | x=-2 | 1 |
* | 多次复制 | x*2 | 6 |
/= | 分割 | x /= 2 | 1.5 |
//= | 楼层分区 | x //= 2 | 1 |
%=) | 模块 | x%= 2 | 1 |
^= | 扩展 | x^ = 2 | 9 |
..= | concatenation | x ..=“世界!” | “3 世界!” |
其他
其他操作器包括 concatenation 和 length 。
操作员 | 描述 | 例子 | 关联的 metameth 方法 |
---|---|---|---|
.. | 将两个字符串合并 | 打印“Hello”… “World!) | __concat |
# | 桌子长度 | 如果 tableVar = 1, 2, 3 ,那么 #tableVar == 3 。 | __len |