一、基本数据类型:
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
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 == 2then
::continue::
print("true")elseprint("false")
end
end
3、table之间的赋值为引用,即只是将地址进行引用,而不是申请新的内存空间。
function func()
local tab1= {1, 2, 3}
local tab2=tab1
table.remove(tab2)for i = 1, #tab1 doprint(tab1[i])
end
print("_______________")for i = 1, #tab1 doprint(tab2[i])
end
end
func()--[[1
2_______________1
2]]
4、在使用and或or时,尽可能加括号。
function func()
local i= 1print(i and10 or 5 + 1)
print((i and10 or 5) + 1)
i=nil
print(i and10 or 5 + 1)
print((i and10 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 doprint(tab[i])
end
print()for k, v in ipairs(tab) doprint(k, v)
end
print()for k, v in pairs(tab) doprint(k, v)
end
end
func()--[[1
2
3nil6
1 1
2 2
3 3
1 1
2 2
3 3
5 6a5]]