lua入门之二table
--table
mytable={} mytable[1]="lua" --打印table名称即是地址,和数组一样 print(mytable) --打印数组名称即是地址 myarray={"xx","oo"} print(myarray)
---比较:数组就是下标为数字的,table下标可为数字,可为其他类型
--移除引用,-- lua 垃圾回收会释放内存
--mytable=nil --print(mytable) mytable2={"wewe","wewertgd"} print("mytable2的类型是:",type(mytable2))
--alertmytable2和mytable2指向同一个table
alertmytable2=mytable2 print("[1]",alertmytable2[1]) print("[2]",alertmytable2[2])
--释放
alertmytable2=nil print("alertmytable2",alertmytable2) print("mytable2",mytable2)
print("---------------------table操作-拼接--------------------")
fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
-- 把table内容拼接
print("连接后的字符串 ",table.concat(fruits,"*"))
-- 第二、三个元素拼接
print("连接后的字符串 ",table.concat(fruits,"*",2,3)) fruits1 = { ["banana"]="banana1", ["orange"]="orange1", ["apple"]="apple1", }
--这种拼接无效
print("连接后的字符串 ",table.concat(fruits1,",")) print("---------------------table操作-插入--------------------") fruits2 = {"banana","orange","apple"}
--末尾插入
table.insert(fruits2,"xxpp") --print(fruits2[4]) --在索引为2的地方插入 table.insert(fruits2,2,"oo") --print(fruits2[2]) for k,v in pairs(fruits2) do print(k,v) end print("---------------------table操作移除--------------------") --移除最后一个元素 table.remove(fruits2) for k,v in pairs(fruits2) do print(k,v) end
--总结 insert remove 不指定位置的话,都是从尾部操作
print("---------------------table操作排序--------------------") fruits3= {"banana","orange","apple","grapes"} print("排序前") for i,v in ipairs(fruits3) do print(i,v) end
---默认排序是按首字母ASCII排序
table.sort(fruits3) print("排序后") for i,v in ipairs(fruits3) do print(i,v) end
print("--------table.maxn最大值(最大下标--------------")
-- -table.maxn在 Lua5.2 之后该方法已经不存在了
tbl = {[1] = "a", [2] = "b", [3] = "c", [26] = "z"} print("tbl长度",#tbl) print("tbl下标最大值",table.maxn(tbl))