Lua中的表達式


【算術操作符】

Lua支持常規的算術操作符有:”+”(加法),”-“(減法),”*”(乘法),”/”(除法),”^”(指數),”%”(取模),一元的”-“(負號)。所有的這些操作符都用於實數。例如:x^0.5將計算x的平方根,x^3將計算x的3次方。

【關系操作符】

Lua提供的關系操作符有:”<“,”>”,”<=”,”>=”,”==”,”~=”;所有這些操作符的運算結果都是true或false。

操作符==用於相等性測試,操作符~=用於不等性測試。這兩個操作符可以應用於任意兩個值。如果兩個值具有不同的類型,Lua就認為它們是不相等的;特別需要說明的是,nil只與其自身相等。

對於table、userdata和函數,Lua是作引用比較的。也就是說,只有當它們引用同一個對象時,才認為它們相等。

【邏輯操作符】

Lua提供的邏輯操作符有and、or和not。與條件控制語句一樣,所有的邏輯操作符將false和nil視為假,而將其它的任何東西視為真。對於操作符and來說,如果它的第一個操作數為假,就返回第一個操作數;不然就返回第二個操作數。對於操作符or來說,如果它的第一個操作數為真,就返回第一個操作數;不然就返回第二個操作數。這里和C++等語言是存在區別的,Lua的邏輯操作符並不是簡單的返回true或false,而是返回操作數的值。例如以下代碼:

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

and和or都使用“短路求值”,也就是說,它們只會在需要時才去評估第二個操作數。

【字符串連接】

要在Lua中連接兩個字符串,可以使用操作符“..”(兩個點)。如果其任意一個操作數是數字的話,Lua會將這個數字轉換成一個字符串。在Lua中,字符串是不可變的值,連接操作符只會創建一個新字符串,而不會對其原操作數進行任何修改。

【table構造式】

構造式是用於創建和初始化table的表達式。最簡單的構造式就是一個空構造式{},用於創建一個空table。構造式還可以用於初始化數組,數組的下標從1開始。例如:

local tbDays ={"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
print(tbDays[1])          -->Sunday
print(tbDays[2])          -->Monday
print(tbDays[3])          -->Tuesday
print(tbDays[4])          -->Wednesday
print(tbDays[5])          -->Thursday
print(tbDays[6])          -->Friday
print(tbDays[7])          -->Saturday

Lua還提供了一種特殊的語法用於初始化table:

local tb1 = {x=10, y=20}
print(tb1.x)          -->10
print(tb1["x"])          -->10

除此之外,Lua還提供了一種更通用的格式,這種格式允許在方括號之間,顯式地用一個表達式來初始化索引值,例如:

local tb1 = {["+"] = "add", ["-"] = "sub", ["*"] = "mul", ["/"] = "div"}
print(tb1["+"])

比如local tb1 = {x=10, y=20}這種構造方式,其實是和local tb1 = {[“x”] = 10, [“y”] = 20}是等價的。在實際編程中,這兩種構造式,都可以替換的用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM