在學習一門語言的時候,運算符也是一項必要的單元,在用lua寫成的代碼中,必定會用到運算符,現在就lua的運算符做一下總結:
運算符一般分為算術運算符,關系運算符和邏輯運算符,連接配接運算符
算術運算符:
二進制運算符:+ - * / ^ (加減乘除幂)
一進制運算符:- (負值)
這些運算符的操作數都是實數
關系運算符:
< > <= >= == ~=
這些操作符傳回結果為false或者true;==和~=比較兩個值,如果兩個值類型不同,Lua認為兩者不同;nil隻和自己相等。Lua通過引用比較tables、userdata、functions。也就是說當且僅當兩者表示同一個對象時相等
注意:Lua比較數字按傳統的數字大小進行,比較字元串按字母的順序進行,但是字母順序依賴于本地環境
為了避免不一緻的結果,混合比較數字和字元串,Lua會報錯,比如:2 < “15”
邏輯運算符:
邏輯運算符認為false和nil是假(false),其他為真,0也是true.
and和or的運算結果不是true和false,而是和它的兩個操作數相關。
a and b -- 如果a為false,則傳回a,否則傳回b
a or b -- 如果a為true,則傳回a,否則傳回b
print( and ) -->
print(nil and ) --> nil
print(false and ) --> false
print( or ) -->
print(false or ) -->
--以此證明and和or傳回的不是true或者是false,而是和兩個操作數相關
x = x or v --如果x為false或者nil則給x賦初始值v
C語言中的三元運算符
a ? b : c
在Lua中可以這樣實作:
(a and b) or c
not的結果一直傳回false或者true
print(not nil) --> true
print(not false) --> true
print(not ) --> false
print(not not nil) --> false
連接配接運算符:
..
字元串連接配接,如果操作數為數字,Lua将數字轉成字元串。
print("Hello " .. "World") --> Hello World
print( .. ) --> 01
優先級:從高到低的順序
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or