参考《lua程序设计》
可以认为,表是一种动态分配的对象,程序只能操作指向表的引用(或指针)。
除此以外,Lua语言不会进行隐藏的拷贝(hidden copies)或创建新的表
--创建表 a={} --创建空表 k="x" a[k]=10 --键“x”值10 a[20]="great" --键20值“great” print(a["x"]) -->10 k=20 print(a[k]) -->"great" a['x']=a['x']+1 print(a["x"]) -->11
本质上a跟表是引用关系,当程序中不再有指向它的引用时,垃圾收集器会最终删除这个表并重用其占用的内存。
即表的初始化,支持混用,支持嵌套
days={"Mon","Tue"} --day[1]="Mon"
a={x=10,y=15} --a.x=10
PS:以上两个不能使用负数索引
op={["+"]="add",["-"]="sub"} --op["+"]=add
注意lua索引一般是从1开始,索引视为整数
对表而言,#操作符返回表长,但是对于表的空洞,#有争议
table
函数 | 作用 |
---|---|
insert | 在指定位置插入一个元素,其他元素后移 |
remove | 删除并返回序列指定的元素,其他元素前移,填补空洞 |
move | 将表中的索引f到e,移动到t位置(本身是拷贝,原来不会自动nil) |