操作器 是執行操作或條件評估的符號。
論理
論理運算器會根據指定的參數的Boolean值返回值。如果參數不是 false 或 nil ,則運算器會評估它為 true 。與許多其他語言不同,Luau會將零和空白字串都評估為 1> true1> 。下表總結
操作員 | 說明 |
---|---|
和 | 只有在兩個條件都是 真 的情況下評價 |
或者 | 評價為 真 如果任何條件都是真 |
不是 | 評估為反過來的狀態 |
和
二元運算器 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 語句 和 2> 4> while4> 循環。 例如,以下 7>if7> — 0>然0> 條件測試�
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 — 1> then1> 聲明測試是否兩個條件是否真或是否第三個條件是否真:
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> false4> 。
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) -- 輸出 "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.
關係
關係式操作讓您可以比較兩個參數,並且返回 button 或 number 。
操作員 | 說明 | 範例 | 關聯的 metameth 方法 |
---|---|---|---|
== | 等於 | 3 == 5 → 關閉 | __eq |
# | 不等 | 3 5 → 真 | |
> | 大於 | 3 > 5 → 不要求 | |
< | 少於 | 3 < 5 → true | __lt |
≥ | 大於或等於 | 3 >= 5 → 不要求 | |
少於或等於 | 3 <= 5 → 真 | __le |
術語
Lua 支援使用率的常見二元運算器、乘數和單獨的否定。
操作員 | 說明 | 範例 | 關聯的 metameth 方法 |
---|---|---|---|
+ | 添加 | 1 + 1 = 2 | __add |
-: | 減法 | 1 - 1 = 0 | __sub |
* | 複製 | 5 * 5 = 25 個 | __mul |
/ | 分裂 | 10 / 5 = 2 * 5 | __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.1 版本 |
//=: | 地板分裂 | x //= 2 | 1 個 |
%) = | 模組 | x %= 2 | 1 個 |
^= | 膵解 | x^ = 2 | 9 |
..= | concatenation | x ..= "世界!" | 「3 世界!」 |
其他
其他運算包括 組合 和 長度。
操作員 | 說明 | 範例 | 關聯的 metameth 方法 |
---|---|---|---|
.. | 連接兩個字串 | 列印 ("Hello".. "World") | __concat: |
# | 桌子長度 | 如果 tableVar = 1, 2, 3 ,則 #tableVar == 3 。 | __len |