lua中的運算符

在學習一門語言的時候,運算符也是一項必要的單元,在用lua寫成的代碼中,必定會用到運算符,現在就lua的運算符做一下總結:
運算符一般分爲算術運算符,關係運算符和邏輯運算符,連接運算符
算術運算符:
二元運算符:+ - * / ^ (加減乘除冪)
一元運算符:- (負值)
這些運算符的操作數都是實數
關係運算符:

< > <= >= == ~=

這些操作符返回結果爲false或者true;==和~=比較兩個值,如果兩個值類型不同,Lua認爲兩者不同;nil只和自己相等。Lua通過引用比較tables、userdata、functions。也就是說當且僅當兩者表示同一個對象時相等
注意:Lua比較數字按傳統的數字大小進行,比較字符串按字母的順序進行,但是字母順序依賴於本地環境
爲了避免不一致的結果,混合比較數字和字符串,Lua會報錯,比如:2 < “15”

邏輯運算符:

and or not

邏輯運算符認爲false和nil是假(false),其他爲真,0也是true.
and和or的運算結果不是true和false,而是和它的兩個操作數相關。

a and b -- 如果afalse,則返回a,否則返回b
a or b -- 如果atrue,則返回a,否則返回b
print(4 and 5) --> 5
print(nil and 13) --> nil
print(false and 13) --> false
print(4 or 5) --> 4
print(false or 5) --> 5
--以此證明andor返回的不是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 0) --> false
print(not not nil) --> false

連接運算符:

..

字符串連接,如果操作數爲數字,Lua將數字轉成字符串。

print("Hello " .. "World") --> Hello World
print(0 .. 1) --> 01

優先級:從高到低的順序

^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
發佈了46 篇原創文章 · 獲贊 13 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章