Lua的表

 

 

 

 

 

 

 

 

 

 

 

 Code示例
--定义一个空表
tabMyArray = {}
print(tabMyArray)
--表赋值
tabMyArray = {11,22,33}
for k, v in pairs(tabMyArray) do
    print(v)
end
--定义一个"键值对"类型的表
tabMyArray2={str1="电梯战神",str2="钓鱼带头盔",str3="我是警察"}
--输出方式2种
print(tabMyArray2.str1)
print(tabMyArray2["str2"])
print(tabMyArray2["str3"])
for k, v in pairs(tabMyArray2) do
    print(tabMyArray2[k])
end

 

表的构造与基本访问

 

 

 

 

 

 

 

 

 

--键值对类型表的迭代输出
tabMyArray5={str1="电梯战神",str2="钓鱼带头盔",str3="我是警察"} --定义表,直接赋值
tabMyArray5.str4="老公你说句话啊"
tabMyArray5["str5"] = "真不要脸"
--输出
for i = 1, 5 do     --使用#迭代输出键值对表是不行的
    print(tabMyArray5["str"..i])
end
for k, v in pairs(tabMyArray5) do
    print(tabMyArray5[k])
end

 

表函数

 

 

 

--表函数
--得到表的长度, 5.3 table.getn() 没有这个函数
tab1 = {"你好","再见","早上好"}
print(#tab1)    --3
--注意: 对于键值对的表, 不能用 # 获得长度
tab2 = {name1="话事人",name2="冠希哥",name3="YJJ"}
print(#tab2)    --0

--表连接
print(table.concat(tab1))   --你好再见早上好
print(table.concat(tab1,"|"))   --你好|再见|早上好
print(table.concat(tab1,"|",2,3))   --再见|早上好

--表的移除  不指定则移除最后一个
tab4 = {"hello","jojo","ok"}
table.remove(tab4)
print(table.concat(tab4," | ")) --hello | jojo
table.remove(tab4,2)
print(table.concat(tab4," | ")) --hello | ok

--表的排序 table.sort()函数
tab5 = {60,8,9,40,35}   --数值
table.sort(tab5)
print(table.concat(tab5," | ")) --8 | 9 | 35 | 40 | 60

tab6={"river","zone","break","Room","您好"}
table.sort(tab6)
print(table.concat(tab6," | ")) --Room | break | river | zone | 您好

--表的最大值 table.maxn()函数,这个函数有问题
--Lua 5.3已经弃用这个函数
tab7 = {1,3,10,5,6,7,8,9}
res1 = table.maxn(tab7)
print(res1)     --输出的却是表的长度
--自定义求最大值函数
function GeTabMaxNumber(table)
    maxNum = 0;
    for k, v in pairs(table) do
        if (maxNum < table[k]) then
            maxNum = table[k]
        end
    end
   return maxNum;
end
maxNum = GeTabMaxNumber(tab7)
print(maxNum)
posted @ 2020-03-28 13:51  少林拖地僧  阅读(178)  评论(0编辑  收藏  举报
Live2D