Lua運算符
運算符是一個符號可以告訴解釋,以執行特定的數學或邏輯操作。 Lua中語言有豐富的內置運算符以及運算符提供了以下類型:
-
算術運算符
-
關係運算符
-
邏輯運算符
-
其它運算符
本教學將一個接一個講解算術,關係,邏輯和其他各種運算符。
算術運算符
下表列出了所有Lua中語言支持的算術運算符。假設變量A持有10和變量B持有20則:
運算符 | 描述 | 示例 |
---|---|---|
+ | 相加兩個操作數 | A + B = 30 |
- | 從所述的第一個減去第二操作數 | A - B = -10 |
* | 兩個操作數相乘 | A * B = 200 |
/ | 通過分子除以反分子 | B / A = 2 |
% | 模運算和整數除法後的餘數 | B % A = 0 |
^ | 指數運算符需要的指數 | A^2 = 100 |
- | 一元運算 - 運算符作為取反 | -A = -10 |
關係運算符
下表列出了所有Lua語言支持的關係運算符。假設變量A持有10和變量B持有20則:
操作符 | 描述 | 示例 |
---|---|---|
== | 檢查,如果兩個操作數的值等於或否,如果是,則條件變為真。 | (A == B) 不為真. |
~= | 檢查,如果兩個操作數的值相等或冇有,如果值不相等,則條件變為真。 | (A ~= B) 為 true. |
> | 檢查,如果左操作數的值大於右操作數的值,如果是,則條件成立。 | (A > B) 不為 true. |
< | 檢查,如果左操作數的值小於右操作數的值,如果是,則條件成立。 | (A < B) 為 true. |
>= | 檢查,如果左操作數的值大於或等於右操作數的值,如果是,則條件成立。 | (A >= B) 不為true. |
<= | 檢查,如果左操作數的值小於或等於右操作數的值,如果是,則條件成立。 | (A <= B) 為 true. |
邏輯運算符
下表列出了所有的Lua語言支持的邏輯運算符。假設變量A持有true,變量B持有false:
運算符 | 描述 | 示例 |
---|---|---|
and | 所謂邏輯與運算符。如果兩個操作數都是不為零,則條件成立。 | (A and B) 為 false. |
or | 所謂邏輯OR運算符。如果有兩個操作數是不為零,則條件變為真。 | (A or B) 為 true. |
not | 所謂邏輯非運算符。用於反轉操作數的邏輯狀態。如果一個條件為真,則邏輯非運算符將返回false。 | !(A and B) 為 true. |
其它運算符
通過Lua語言支持其他運算符包括串聯和長度。
運算符 | 描述 | 示例 |
---|---|---|
.. | 連接兩個字符串。 | a..b 當a的值為 "Hello " 以及b的值為 "World", 會返回 "Hello World". |
# | 一個一元運算符返回一個字符串或一個表的長度。 | #"Hello" 會返回 5 |
Lua運算符優先級
運算符優先級來確定條件的表達式中的分組。這會影響一個表達式如何計算。某些運算符的優先級高於其他;例如,乘法運算符的優先級比加法運算更高:
例如 x = 7 + 3 * 2;這裡x被分配13,不是20,因為運算符*的優先級比+高,所以先得到乘以3*2,然後添加7。
這裡具有最高優先級運算符出現在表的頂部,那些具有最低出現在底部。在一個表達式,更高的優先級運算符將首先計算賦值。
分類 | 操作符 | 關聯 |
---|---|---|
一元運算 | not # - | 從右到左 |
串聯 | .. | 從右到左 |
乘法 | * / % | 從左到右 |
相加 | + - | 從左到右 |
關係 | < > <= >= == ~= | 從左到右 |
等式 | == ~= | 從左到右 |
邏輯AND | and | 從左到右 |
邏輯OR | or | 從左到右 |