Lua只有一种数据结构,叫table。但是他灰常强大,足以满足我们一般的要求,而且可以根据table做出其他的效果。
一.简介
table类型实际上是一种关联数组,是一种具有特殊索引方式的数组,不仅可以通过整数来索引,还可以通过字符串等其他类型(除了nil)来索引。table没有固定大小,可以动态添加元素。
table可以被理解为一个对象,程序使用一个引用来使用table,这个引用是基于引用计数的。如果一个table没有被引用,那么Lua的垃圾回收机制会清除table并回收其内存。
创建table是通过构造式来创建的。
先来看看传统的C语言的方式的数组用法:
--创建一个table,并将其引用使用a保存
a = {}
--向table中添加三条数据
a[1] = "hehe"
a[2] = "haha"
a[3] = "heihei"
--输出
for i = 1,3 do
print(a[i])
end
结果:
hehe
haha
heihei
请按任意键继续. . .
haha
heihei
请按任意键继续. . .
but Lua的数组的索引可以是其他类型的,类似dictionary的功能。下面是使用字符串作为索引:
--创建一个table,并将其引用使用a保存
a = {}
--table中的索引不仅限于number,使用其他类型的数据也可以作为索引
a["hehe"] = "heihei"
local i = "hh"
a[i] = "haha"
local t = "hehe"
print(a[t])
print(a["hh"])
结果:
heihei
haha
请按任意键继续. . .
haha
请按任意键继续. . .
一个非常容易出错的地方:
一种简便的写法:a.name <&#