天天看點

lua中的運算符

在學習一門語言的時候,運算符也是一項必要的單元,在用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