一、基本數據類型:
lua: nil(空)、boolean(false和nil為假)、number(數值)、string(字符串)、table(表)、function(方法)、thread (線程)、userdata
python: None(空)、boolean(false和None為假)、number(數值)、string(字符串)、list(列表)、tuple(元表)、dictionary(字典)、def(函數)、thread (線程)
string操作:
lua:
str = “Hello” .. “World!” print (str) # 輸出完整字符串 print (string.sub(str,1,1)) # 輸出字符串中的第一個字符 print (string.sub(str,3,5)) # 輸出字符串中第三個至第五個之間的字符串 print (string.sub(str,3,-1)) # 輸出從第三個字符開始的字符串 print (str .. "TEST") # 輸出連接的字符串 print (string.find(str,"el")) # 輸出第一個滿足項起始下標 print (string.format("the value is:%d",4)) # 字符串格式化輸出 輸出結果 Hello World! H llo llo World! Hello World!TEST 2 3 the value is:4
python:
str = “Hello” + “World!” print (str) # 輸出完整字符串 print (str[0]) # 輸出字符串中的第一個字符 print (str[2:5]) # 輸出字符串中第三個至第六個之間的字符串 print (str[2:]) # 輸出從第三個字符開始的字符串 print (str * 2) # 輸出字符串兩次 print (str + "TEST") # 輸出連接的字符串 print ("He" in str) # 查詢是否包含某字符 print ("the value is:%d" %(4)) #字符串格式化輸出 輸出結果 Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST True the value is:4
集合操作:
lua: 下標從1開始
array = {"Lua", "Python"} for i= 0, #array do print(array[i]) end --for循環 ipairs對於集合下標要求必須從1開始遞增並且中間值不可為nil --pairs 輸出結果是隨機的即不是按照集合順序輸出,但沒有ipairs的限制 for _, v in ipairs(array) do print(v) end 輸出結果 "Lua" "Python" "Lua" "Python"
python: 下標從0開始
array = ["Lua", "Python"] for i in range(len(array)): print(array[i]) i = 0 while (i<len(array)): print(array[i]) i+=1 輸出結果 "Lua" "Python" "Lua" "Python"
二、lua注意事項:
1、lua函數第一層結構中,return語句之后不能再有別的代碼。
function func() return "H" local data = "Hello" end
2、goto語句的跳轉目的,不能寫到邏輯判斷語句塊中。
function func() local i = 1 goto continue if i == 2 then ::continue:: print("true") else print("false") end end
3、table之間的賦值為引用,即只是將地址進行引用,而不是申請新的內存空間。
function func() local tab1 = {1, 2, 3} local tab2 = tab1 table.remove(tab2) for i = 1, #tab1 do print(tab1[i]) end print("_______________") for i = 1, #tab1 do print(tab2[i]) end end func() --[[ 1 2 _______________ 1 2 ]]
4、在使用and或or時,盡可能加括號。
function func() local i = 1 print(i and 10 or 5 + 1) print((i and 10 or 5) + 1) i = nil print(i and 10 or 5 + 1) print((i and 10 or 5) + 1) end func() --[[ 10 11 6 6 ]]
5、for語句,下標不是連續的不要使用ipairs。ipairs遇見nil就返回。
function func() local tab = {1, 2, 3, nil, a = 5, 6} for i = 1, #tab do print(tab[i]) end print() for k, v in ipairs(tab) do print(k, v) end print() for k, v in pairs(tab) do print(k, v) end end func() --[[ 1 2 3 nil 6 1 1 2 2 3 3 1 1 2 2 3 3 5 6 a 5 ]]