運作者 是執行操作或條件評估的符號。
論理
邏輯運作者會根據給定參數的 boolean 值來返回值。如果引數不是 false 或 nil ,則操作員會將其評為 true 。與其他許多語言不同,Luau將零和空白字串視為 true 。下表總結了邏輯運作者在 條件下的行為方式 。
操作員 | 說明 |
---|---|
and | 只有兩個條件都是真實的情況下才評價為 true |
or | 如果兩個條件都是真實的,評價為 true 如果其中一個條件是真實的 |
not | 評價為條件的相反 |
和
二進制運作符 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 聲明 和 while 循環。例如,下列 if - then 聲明測試兩個條件都是真實的:
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
二進制運作符 or 返回兩個參數之一。如果第一個參數評價為 true ,則返回第一個引數。否則,返回第二個引數。
local y = x or 1print(y) -- 1 因為 x 不存在,因此為零local d = falselocal e = d or 1print(e) -- 1 因為 d 是假的print(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 - then 聲明測試兩個條件是否真實 或 第三個條件是否真實:
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,則會返回 true。否則,將返回 false 。
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) -- 輸出「零」因為零不是真實的endif not falseVariable thenprint(falseVariable) -- 輸出「false」,因為「false」不是真實的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.
關聯
關係運作者比較兩個參數並返回 boolean : true 或 false 。
操作員 | 說明 | 範例 | 相關的元方法 |
---|---|---|---|
== | 等於 | 3 == 5 → false | __eq |
~= | 不等於 | 3 ~= 5 → true | |
> | 大於 | 3 > 5 → false | |
< | 少於 | 3 < 5 → true | __lt |
>= | 大於或等於 | 3 >= 5 → false | |
<= | 小於或等於 | 3 <= 5 → true | __le |
算術
Luau 支持通常的二進制運算符以及乘法、除法和單純否定。
操作員 | 說明 | 範例 | 相關的元方法 |
---|---|---|---|
+ | 新增 | 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 |
..= | 連接字串 | x ..= " World!" | "3 World!" |
雜項
其他運作包括 連接 和 長度 。
操作員 | 說明 | 範例 | 相關的元方法 |
---|---|---|---|
.. | 連接兩個字串 | print("Hello " .. "World!") | __concat |
# | 表的長度 | 如果 tableVar = {1, 2, 3} , 則 #tableVar == 3 . | __len |