个人感觉LUA语言的简洁高效,正是在于同一变量用于不同类型,表格可以便利的实现各种数据结构,后面通过元表(元表)面向对象
1.数组
a = {} for i = -5 5做一个[i] = 0结束
初始化数组的索引可以是任意值,但是LUA习惯使用1作为数组开始的下标,LUA库和长度操作符都遵循这个习惯,如果不是从1开始就不能使用这些功能,#一个获取数组长度
2.矩阵和多维数组
a = {} for i = 1 10 do a [i] = {} for j = 1 10 do a [i] [j] = 0 end end
再table [1]的位置存储的是一个table []数组;再次table中key是无序的,所以使用pairs的迭代并不保证提交次序来访问,基于这种特性可以很简便的创建“稀疏矩阵”
3.链表
列表= {下次=列表中,值= V};
4.队列
列表= {}; - 为了避免污染全局名称空间,创建目录表来存储队列操作
函数List.new()返回{first = 0,last = -1}结束
fucntion List.pushfirst(list,value)
本地优先= list.first-1
list.first =第一
列表[第一] =值;
结束
fucntion List.pushlast(list,value)
本地最后= list.last + 1
list.last =最后
列表[最后] =值;
结束
函数List.popfirst(list)
本地优先= list.first;
如果第一次> list.last然后错误(“列表为空”)结束
本地值=列表[第一]
列表[第一] =零
list.first =第一+ 1;
返回值
结束
5.字符串缓冲(逐行读取一个文件)
本地buff =“”
对于io.lines()中的行来说
抛光轮=抛光轮+ .. ..线” \ n”个
结束
以这种方式读取一个几百ķ的字符串可能要移动几十个GB的数据,性能非常低,可以使用table.contact(表)连接起来
本地线= {}
为l在io.lines()做
线[#线+ 1] = 1 ..” \ n”个
结束
本地str = table.contact(行)