table插入一个
local t = {a=1, b=2, c=3}
-- table.insert(t,"d=4") --相当于插入一个字符串,并不是hash
local m = {} --直接赋值m.d报错,需要先声明m为一个table
m.d=4
t["d"] = 5 --t.d和t["d"]一个意思,但是前面不能加local,否则报错
print(t.d)
print(m.d)
----------
5
4
[Finished in 0.1s]
if语句的用法
local x = 10
--单个if分支
if x > 0 then
print(true)
end
--两个if分支:if-else
if x > 0 then
print(true)
else --if之后需要加then,else之后
print(false)
end
--多个分支
if x == 0 then
print(0)
elseif x > 0 then --elseif之后要加then,否则报错
print(true)
else --else之后不能加判断语句,否则报错
print(false) --不能是elseif,也不能加then
end
true
true
true
[Finished in 0.1s]
lua的几种迭代器
标准库提供了几种迭代器,包括用于迭代文件中每行的(io.lines)、 迭代table元素的(pairs)、迭代数组元素的(ipairs)、迭代字符串中单词的(string.gmatch)等。
local id_list = string.gmatch( args.role_auto_id,”(%d+)” )
lua面向对象
local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))
print("case 3:", str.sub(str, 1, 2))
----------
case 1: ab
case 2: ab
case 3: ab
[Finished in 0.1s]
local arr1 = {1, 2, 3, [5]=5}
print(#arr1) -- output: 3
local arr2 = {1, 2, 3, nil, nil}
print(#arr2) -- output: 3
local arr3 = {1, nil, 2}
arr3[5] = 5 --和上面的例子相同,table的长度遇到nil停止
print(#arr3) -- output: 1
local arr4 = {1,[3]=2}
arr4[4] = 4 --相当于a[3] = 2,suiyou 长度等于arr4[4] = 4的长度,换成arr4[5] = 4就把不行了
print(#arr4) -- output: 4
----------
3 3 1 4
----------
do
local arr4 = {1,[4]=2}
arr4[5] = 4
print(#arr4)
print(table.maxn(arr4))
end
---------------------
1
5
[Finished in 0.1s]
如果你要删除一个数组中的元素,请使用remove函数,而不是用nil赋值。
表的赋值添加
local a = {a = "b"}
print(a.a)
a = {b = "c"} --这里无论是否加local都相当于把table覆盖了,因为table相当于一个变量
print(a.a)
print(a.b)
----------------
b
nil
c
local a = (2==2)
print(type(a)) --a是boolean类型
if a then
print(type(2==2))
print("asdas")
end
结果:
boolean
boolean
asdas
[Finished in 0.2s]
if (2==2) == true then -- 等于true,但是类型是boolean
print("aaa")
end
if type(2==2) == true then
print("aaa")
end