操作员

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

操作符号 是表示执行操作或条件评估的符号。

有道理

逻辑操作器根据指定参数的Boolean值返回值。如果参数不是 falsenil ,那么操作器将其评估为 true 。与许多其他语言不同,Luau在1> conditionals1>中考虑零和空白字符串为 4> true4> 。下表总结了

操作员描述
仅评论为 只有两个条件是真的
评估为 是否为真 如果条件为真
不是评估为反对条件

二进制操作符 and 返回其中一个参数。如果第一个参数评估为 true ,那么它将返回第二参数。否则,它将返回第一个参数。


print(4 and 5) -- 5
print(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 = true
local tomatoSauce = true
if pasta == true and tomatoSauce == true then
print("We have spaghetti dinner")
else
print("Something is missing...")
end
-- Output: We have spaghetti dinner

二进制操作符 or 返回两个参数之一。如果第一个参数评估为 true ,则返回第一个参数。否则,它将返回第二参数。


local y = x or 1
print(y) -- 1 因为 x 不存在,因此它是零
local d = false
local e = d or 1
print(e) -- 1 因为 d 是 false
print(4 or 5) -- 4
print(nil or 12) -- 12
print(false or 12) -- 12
print(false or true) -- 真的
print(false or false) -- 否
print(true or false) -- 真的
print(true or true) -- true

您可以使用 or 来在 控制结构 中执行复杂的逻辑测试。例如,以下 if — 2>然后2> 声明测试是否两个条件是否真或 5>或5> 是否是第三个条件是否真:


local pasta = false
local tomatoSauce = true
local garlicBread = true
if (pasta == true and tomatoSauce == true) or garlicBread == true then
print("We have either spaghetti dinner OR garlic bread")
else
print("Something is missing...")
end
-- Output: We have either spaghetti dinner OR garlic bread

不是

单元操作器 not 返回参数的反向Boolean值。如果参数为 falsenil ,它将返回 1> true1> 。否则,它将返回 4> force4> 。


print(not true) -- 否
print(not false) -- 真的
print(not nil) -- 真的
print(not "text") -- 否
print(not 0) -- false

您可以使用 not 操作来触发一个条件或循环,如果变量是 falsenil


local nilVariable -- 变量声明了,但没有值,所以它是零
local falseVariable = false -- 变量声明为 false 值
if not nilVariable then
print(nilVariable) -- 输出 “nil” 因为 nil 不是真实的
end
if not falseVariable then
print(falseVariable) -- 输出“否”,因为“否”不是真实
end

您还可以使用 not 操作测试多个条件声明的相反。在以下代码示例中, ifthen 三个条件测试,它既不是三大于四,也不是五大于四。


local three = 3
local four = 4
local five = 5
if not (three > four or five < four) then
print("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 + 25
)-减法x=-21
*多次复制x*26
/=分割x /= 21.5
//=楼层分区x //= 21
%=)模块x%= 21
^=扩展x^ = 29
..=concatenationx ..=“世界!”“3 世界!”

其他

其他操作器包括 concatenationlength

操作员描述例子关联的 metameth 方法
..将两个字符串合并打印“Hello”… “World!)__concat
#桌子长度如果 tableVar = 1, 2, 3 ,那么 #tableVar == 3__len