3. Expressions
1)算數運算符: + - * / ^(冪)
2)關係運算符: > < >= <= == ~=(不等於)
對於tables, userdata, functions 只有二者表示的對象相等,他們相等(就像c中的指針指向同一個位置,這兩個指針比較時才相等)如:
a = {}; a.x = 1; a.y = 0;
b = {}; b.x = 1; b.y = 0
c = a
則 c == a 但 a ~=b
另,不一樣類型的變量儘可能不要拿來比較,容易引發錯誤。
3)邏輯運算符: and or not
lua 中的 邏輯運算符含義和c等語言中的差異比較大:
a and b --若是a 爲false, 則返回a,不然返回b (4 and 5 --> 5)
a or b --若是a爲true,則返回a,不然返回b (4 or 5 --> 4)
not a --若是a爲true,則返回false,不然返回true (not 0 -->false)
另,lua中只有nil和false的邏輯值爲false,其餘值都爲true
c語言中的 a?b:c, 在Lua中能夠表示爲 (a and b) or c
4)鏈接運算符:
.. 用於鏈接兩個字符串 ("ab".."cd" --> "abcd")
5)優先級:
a) ^
b) not -(unary)
c) * /
d) + -
e) ..
f) < > <= >= ~= ==
g) and
h) or
6)table的結構
day = {1,2,3,4,5,6} --> day[1] = 1; day[2] = 2; ........; day[6] = 6
注意,在默認狀況下,table的index值是從1開始,而不像c中從0開始
table也能夠本身設定Index的內容,數字字符串皆可
day = {["x"] = 1, ["y"] = 2, 3,4,5} --> day.x = 1; day.y = 2; day[1] = 3; day[2] = 4; day[3] = 5
注意,在沒有明確指出Index的值(上例中的3,4,5),他們的Index編號也從1開始順序標記,和特定指的Index(上例中的想,y)沒有關係。