運算子是告訴直譯器執行特定數學或邏輯操作的符號。 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) 結果為false |
~= |
檢查兩個運算元的值是否相等,如果值不相等則條件變為true 。 |
(A ~= B) 結果為true |
> |
檢查左運算元的值是否大於右運算元的值,如果是,則條件變為true 。 |
(A > B) 結果為false |
< |
檢查左運算元的值是否小於右運算元的值,如果是,則條件變為true 。 |
(A < B) 結果為true |
>= |
檢查左運算元的值是否大於或等於右運算元的值,如果是,則條件變為true 。 |
(A >= B) 結果為false |
<= |
檢查左運算元的值是否小於或等於右運算元的值,如果是,則條件變為true 。 |
(A <= B) 結果為true |
下表顯示了Lua語言支援的所有邏輯運算子。 假設變數A=true
,變數B=false
,則 -
運算子 | 描述 | 範例 |
---|---|---|
and |
邏輯與運算子。如果兩個運算元都不為零,則條件成立。 | (A and B) 結果為false |
or |
邏輯或運算子。 如果兩個運算元中的任何一個不為零,則條件變為真。 | (A or B) 結果為true |
not |
邏輯非運算子。用於反轉其運算元的邏輯狀態。 如果條件為真,則邏輯非運算子將為false 。 |
!(A and B) 結果為true |
Lua語言支援的其他運算子包括連線和長度。
編號 | 描述 | 範例 |
---|---|---|
... |
連線兩個字串 | 如果a 為Hello ,b 為World ,a..b 將返回Hello World 。 |
# |
返回字串或表長度的一元運算子。 | #"Hello" 將返回 5 |
運算子優先順序確定表示式中的術語分組。 這會影響表示式的計算方式。 某些運算子的優先順序高於其他運算子; 例如,乘法運算子的優先順序高於加法運算子 -
例如,x = 7 + 3 * 2
; 這裡x
賦值為13
,而不是20
,因為運算子 *
的優先順序高於+
,所以它首先乘以3 * 2
然後再加上7
。
此處,具有最高優先順序的運算子顯示在錶的頂部,具有最低優先順序的運算子顯示在底部。 在表示式中,將首先評估更高優先順序的運算子。
類別 | 操作符 | 關聯性 |
---|---|---|
一元 | not # - |
右到左 |
連線 | .. |
右到左 |
乘法 | * / % |
左到右 |
加法 | + - |
左到右 |
關係 | < > <= >= == ~= |
左到右 |
相等 | == ~= |
左到右 |
邏輯與 | and |
左到右 |
邏輯或 | or |
左到右 |