Lua开发-- table

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

你可能感兴趣的:(lua,lua)