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))

 

posted @ 2017-09-18 20:00  淡墨&青衫  阅读(56)  评论(0编辑  收藏  举报