lua学习笔记之浅淡table

来源:互联网 发布:松江云安消防主机编程 编辑:程序博客网 时间:2024/05/16 11:12

table类型实现了关联数组(associative array)。关联数组是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或其他类型的值(除了nil)来索引它。

此外talbe没有固定的大小。可以动态地添加任意数量的元素到一个table中。基于table可以以一种简单,统一和高效的方式来表示普通数组、符号表、集合、记录、队列和其他数据结构。lua也可以通过table来表示模块、包和对象。

在Lua中table既不是值也不是变量而是对象。可以将一个table想象成一种动态分配的对象,程序仅持有一个对它们的引用(或指针),lua不会暗中产生table的副本或创建新的table。此外,在lua中也不需要声明一个table。table的创建通过构造表达式完成。最简单的构造表达式是{}。

a={}a["aa"]="aaa"print(a["aa"])--for i=0,100 do--a[i]=i;--end----for o=100,0,-1 do--print(a[o])--endb={}b["bb"]="bbb"print(b.bb)
上面的两种写法是等价的。

数组通常以1作为索引的起始值。长度操作符“#”用于返回一个数组或线性表的最后一个索引值(或为其大小)。

for i=1,100 doa[i]=i;endfor o=1,#a doprint(a[o])end
关于长度操作符在lua中的习惯写法

--打印列表a的最后一个值print(a[#a])--删除最后一个值a[#a]=nil--将v添加到列表的末尾a[#a+1]=v

table.maxn()--也可以返回一个table的最大索引数




0 0