Lua表(表)
使用表来统一表示Lua中的一切数据,是Lua区分于其他语言的一个特色。这个特色从最开始的Lua版本保持至今,很大的原因是为了在设计上保持简洁.Lua表分为数组和散列表部分,其中数组部分不像其他语言那样,从0开始作为第一个索引,而是从1开始。散列表部分可以存储任何其他不能存放在数组部分的数据,唯一的要求就是键值不能为<代码> nil> 代码。尽管内部实现上区分了这两个部分,但是对使用者而言却是透明的。使用Lua表,可以模拟出其他各种数据结构,数组,链表,树等。
虽然设计上简洁,并且对使用者更加透明,友好,但是如果使用不当,还会造成效率性能上的差异。
表是Lua的一种数据结构用来帮助我们创建不同的数据类型,如:数字,字典等。
Lua表使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是零。
是Lua表不固定大小的,你可以根据自己需要进行扩容。
Lua也是通过表来解决模块(模块),包(包)和对象(对象)的。例如字符串。格式表示使用“格式”来索引表字符串。
序号方法,用途1 <强>表。concat(表[,9月,开始[,]]]):强>
concat是连接(连锁,连接)的缩写。table.concat()函数列出参数中指定表的数组部分从开始位置到结束位置的所有元素,元素间以指定的分隔符(sep)隔开。
<强>表。插入(表,pos,值):强>在表的数组部分指定位置(pos)插入值为价值的一个元素。pos参数可选,默认为数组部分末尾。
3 <强>表。maxn(表)强>指定表中所有正数键值中最大的键值。如果不存在关键值为正数的元素,则返回0。(<强> Lua5.2之后该方法已经不存在了,本文使用了自定义函数实现强>)
4 <强>表。删除(表(pos)) 强>返回表数组部分位于pos位置的元素。其后的元素会被前移。pos参数可选,默认为表长度,即从最后一个元素删起。
5 <强>表。排序(表[,comp]) 强>对给定的表进行升序排序。
——,简单的表 mytable =, {} 打印(“mytable 的类型是,:,“,,类型(mytable)) mytable [1],=,“Lua” mytable(“哇”),=,“修改前” 打印(“mytable 索引为1,的元素是,:,“,,mytable [1]) 打印(“mytable 索引为wow 的元素是,:,“,,mytable["哇"]) ——alternatable和mytable的是指向同一个表 alternatable =mytable 打印(“alternatable 索引为1,的元素是,:,“,,alternatable [1]) 打印(“alternatable 索引为wow 的元素是,:,“,,alternatable["哇"]) alternatable(“哇”),=,“修改后” 打印(“mytable 索引为wow 的元素是,:,“,,mytable["哇"]) ——,释放变量 alternatable =nil 打印(“alternatable 是,,”,,alternatable) ——,mytable仍然可以访问 打印(“mytable 索引为wow 的元素是,:,“,,mytable["哇"]) 时间=mytable 零; 打印(“mytable 是,“,,,mytable);
运行结果:
=========================================================================
fruits =,{“香蕉”、“橙色”,“苹果”} ——,在末尾插入 table.insert(水果,芒果) 打印(“索引为4的元素为,:,“,,水果[4]); ——在索引为2的键处插入 table.insert(水果,,2,,“葡萄”) 打印(“索引为2的元素为,:,“,,水果[2]) 打印(“最后一个元素为,:,“,,水果[5]) table.remove(水果) 打印(“移除后最后一个元素为,,:“,水果[5])
运行结果:
=======================================================================
function table_maxn (t) local mn =, 0; for k, v 双拷贝(t) 做 if mn & lt; k 然后 时间=mn k; 结束 结束 return 锰; 结束 tb1 =, {[1],=,“a”, [2],=,“b”, [3],=,“c”, [26],=,“z”} 打印(“tb1 长度,:,“,,# tb1) 打印(“tb1最大值,:,“,,table_maxn (tb1))
运行结果: