table 是 Lua 的一种数据结构
1.初始化为空表
mytable={
}
2.指定table内容
mytable={
}
mytable[1]='hell0'
mytable[2]='lua'
mytable[4]='easy'
for i,k in pairs(mytable) do
print(i,k)
end
--1 hell0
--2 lua
--4 easy
3.删除table,lua 垃圾回收会释放内存
mytable=nil
4)当为 table a 设置元素,然后将 a 赋值给 b,则 a 与 b 都指向同一个内存。如果 a 设置为 nil ,则 b 同样能访问 table 的元素
mytable={
}
mytable[1]='hell0'
mytable[2]='lua'
mytable[4]='easy'
print("mytable value:")
for i,k in pairs(mytable) do
print(i,k)
end
copytable=mytable
print("copytable value:")
for i,k in pairs(copytable) do
print(i,k)
end
mytable=nil
print("after delete mytable,copytable value:")
for i,k in pairs(copytable) do
print(i,k)
end
print(mytable)
--[[
mytable value:
1 hell0
2 lua
4 easy
copytable value:
1 hell0
2 lua
4 easy
after delete mytable,copytable value:
1 hell0
2 lua
4 easy
nil
]]--
5)table操作
函数 | 作用 |
---|---|
table.concat (table [, sep [, start [, end]]]) | 列出从start位置到end位置的数组部分的所有元素, 元素间以指定的分隔符(sep)隔开 |
table.insert (table, [pos,] value) | 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾. |
table.remove (table [, pos]) | 返回table数组部分位于pos位置的元素. 其后的元素会被前移. pos参数可选, 默认为table长度, 即从最后一个元素删起 |
table.sort (table [, comp]) | 对table升序排序 |
table.concat
mytable={
}
mytable[1]='hello'
mytable[2]='lua'
mytable[3]='is'
mytable[4]='easy'
print(table.concat(mytable))
print(table.concat(mytable,"-"))
print(table.concat(mytable,"-",1,3))
--[[
helloluaiseasy
hello-lua-is-easy
hello-lua-is
]]--
不能是键值对的形式,否则会报错
mytable['key1']='hello'
mytable['key2']='lua'
mytable['key3']='is'
mytable['key4']='easy'
invalid value (nil) at index 1 in table for ‘concat’
table.sort
mytable={
"Tom","Bob","Lisa","Lili"}
table.sort(mytable)
for i,k in ipairs(mytable) do
print(i,k)
end
--[[
1 Bob
2 Lili
3 Lisa
4 Tom
]]--
键值对的table(如果key为整型)会根据value排序
mytable={
}
mytable[2]='hello'
mytable[3]='lua'
mytable[1]='is'
mytable[4]='easy'
for i,k in pairs(mytable) do
print(i,k)
end
print("******")
table.sort(mytable)
for i,k in pairs(mytable) do
print(i,k)
end
--[[
1 is
2 hello
3 lua
4 easy
******
1 easy
2 hello
3 is
4 lua
]]--
table.insert
mytable={
'he','sa','ds','lu'}
instable={
}
for i,k in pairs(mytable) do
table.insert(instable,k)
end
for i,k in pairs(instable) do
print(i,k)
end
--[[
1 he
2 sa
3 ds
4 lu
]]--
table.remove
mytable={
'he','sa','ds','lu','li','kk'}
instable={
}
for i,k in pairs(mytable) do
table.insert(instable,k)
end
for i =0,2,1 do
table.remove(instable)
end
for i,k in pairs(instable) do
print(i,k)
end
print(instable[1])
print(instable[2])
print(instable[3])
print(instable[4])
print(instable[5])
print(instable[6])
--[[
1 he
2 sa
3 ds
he
sa
ds
nil
nil
nil
]]--