一、基本數據類型:
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 ]]
