0x03 表達式
算術操作符
支持常規的算術操作符:二元的 + - * / ^ %
一元的 -
算術操作與C等語言一致
關係操作符
Lua提供了以下的關係操作符:<
,>
,<=
,>=
,~=
所有這些操作符的運算結果都是true
或false
==
~=
用於相等性測試,這兩個操作符可以應用於任意兩個值。如果值具有不同類型則Lua認爲它們是不相等的,否則Lua會根據它們的類型來比較兩者。
對於table
userdata
和function
,Lua是作引用比較的。
a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
a = c
上面的代碼結果爲 a==c
a~=b
不同類型的值做比較時返回false
邏輯操作符
邏輯操作符有and
or
not
,所有的邏輯操作符都返回true
false
nil
- 對於 and
來說,如果第一個操作數爲假,就返回第一個操作數,否則返回第二個操作數
- 對於 or
來說,如果第一個操作數爲真,就返回第一個操作數,否則返回第二個操作數
a>b?a:b
用and
和or
來表示則是
max = (x > y) and x or y
- 當x > y 時,就返回and
後面的x,
- 當x <= y 時,or
前面的表達式爲false,於是返回or
後面的y
字符串連接
連接操作符:..
print("Hello" .. "World") -> HelloWorld
print(0..1) -> 01
優先級
Item |
---|
^ |
not # -(一元) |
* / % |
.. |
< > <= >= |
and |
or |
table構造式
可以初始化數組 也可以初始化鍵值對
num = {"one", "two", "three"}
a = {x=10, y=20}
若要以0開始索引,則可以這麼做:
days = {[0] = "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
構造式 a = {x=0, y=0}
等價於 a = {["x"] = 0, ["y"] = 0}