--Lua 总结之 tabel
--[[
myTable = {}
for i=1,10 do
myTable[i] = i
end
table.insert(myTable, 1,100)
table.insert(myTable,15,85)
a = table.getn(myTable)
print("sum:"..a)
for i=1,28 do
print(myTable[i])
end
]]
--------------------总结: table.getn() 是通过寻找nil来判断结尾
--table.insert() 可以插入任何地方,但是如果中间有nil的元素,在内存中存在 但是会产生隐患,所以要确保最后一个为nil,table中间没有nil的元素
--------------------pairs() 遍历table中的每个元素,对type()的灵活使用
--[[
c = {1,2,3,4}
myName = {"zhangsan","lisi","lucy","jame","hanmeimei",c}
for index,value in pairs(myName) do
print(type(value))
if type(value) == "table" then
for i,v in pairs(value) do
print(v)
end
else
print(index,value)
end
end
]]
--可以隐约的感觉到Lua的内部,定义变量的或者函数都是一个指针,指向一块内存。每次使用的时候,Lua都会自己去调用一个类似type()这个函数来判断这个指针所指向的内存的类型。
--另外有一张全局的表,记录这全局变量和函数的指针,指向个自的内存区域,局部变量仅仅只是在堆栈里存活一小段时间,这只是我的猜测
-------------------table.remove() 这个函数没有什么好说的,但是它可以在删除后返回被删除的元素,这点可以灵活运用,比如需要将一个元素从一个tabel转移到另一个table,是不是很方便呢。
--[[
t1 = {1,2,3,4,5,6}
t2 = {}
print("t1:",#t1)
print("t2:",#t2)
a = #t1
for i=1,a do
del = table.remove(t1,1)
table.insert(t2,del)
end
print("-> t1:",#t1)
print("-> t2:",#t2)
b = #t2
for i=1,b do
print(t2[i])
end
]]