Lua 入门学习教程(一) Table 函数库
发布时间:2020-12-14 21:58:18 所属栏目:大数据 来源:网络整理
导读:table.concat( tablename,“,start_index,end_index ) 连接 table 中的第一个索引连续的多项 例如 local mytable={"this","is","game"} --不指定分隔符、开始index(默认1)、结束index(默认maxn) print(table.concat( mytable)) --指定分隔符,不指定开始inde
table.concat( tablename,“,start_index,end_index )连接 table 中的第一个索引连续的多项 local mytable={"this","is","game"} --不指定分隔符、开始index(默认1)、结束index(默认maxn) print(table.concat( mytable)) --指定分隔符,不指定开始index,结束index print(table.concat( mytable,"-")) --指定分隔符,指定开始index,不指定结束index print(table.concat( mytable,"-",2)) --指定分隔符,指定开始index,指定结束index print(table.concat( mytable,1,2 )) 输出结果 thisisgame this-is-game is-game this-is 再例如 local mytable= { [1]="a",[2]="b",[3]="15",[100]="1500",[101]="1501" } print(table.concat( mytable,"-")) 结果输出 a-b-15 table.insert(table,pos,value)在指定位置插入一项,如果没有指定位置,则插入到结尾 local mytable={"is","game"} table.insert(mytable,"happly") table.insert(mytable,"play") table.insert(mytable,"this") print(table.concat( mytable,"-")) 输出结果 this-is-game-happly-play table.maxn(table)获取table中的最大索引值 #table获取第一个连续索引的最大值 例如 local mytable= { [1]="a",[101]="1501" } print(#mytable) print(table.maxn(mytable)) 输出结果 3 101 table.remove(table,pos)移除指定位置的元素,如果没有指定pos,则移除第一个连续索引末尾的元素。注意元素被删除后,后面的元素会往前移。 例如 local mytable= { [1]="a",[101]="1501",m_name="ddddd" } table.remove(mytable) for k,v in pairs(mytable) do print(k,v) end 输出结果 1 a 2 b m_name ddddd 100 1500 101 1501 可以看到,不指定pos,然后mytable[3]被移除了 再例如 local mytable= { [1]="a",m_name="ddddd" } table.remove(mytable,1) for k,v) end 输出结果 1 b 2 15 m_name ddddd 100 1500 101 1501 可以看到,把 mytable[1] 删除后,后面的元素前移了。 很多人习惯把 mytable[1]=nil 这样去删除一个元素,但是这样会出现问题。虽然 mytable[1]==nil,但是连续索引就断掉了。一些对于连续索引的操作就不能执行了。比如下面的例子 local mytable= { [1]="a",m_name="ddddd" } mytable[1]=nil for i,v in ipairs(mytable) do print(i,v) end 输出结果是:什么都没有,空的 对于不是连续索引的 其它项,我们将其置为 nil 即可,例如: local mytable= { [1]="a",m_name="ddddd" } mytable[100]=nil for k,v) end 输出结果 1 a 2 b 3 15 m_name ddddd 101 1501 table.sort( tablename,sortfunction )对table 进行排序,如果不指定 softfunction 排序算法,默认是升序排序 local mytable= { 1,3,4,2 } print("before : " .. table.concat( mytable,"-" )) table.sort( mytable ) print("after : " .. table.concat( mytable,"-" )) 输出结果 before : 1-3-4-2 after : 1-2-3-4 我们可以自己指定排序函数,比如我这里让它降序排序 local mytable= { 1,"-" )) table.sort( mytable,function( var1,var2 ) -- body return var1>var2 end) print("after : " .. table.concat( mytable,"-" )) 结果输出 before : 1-3-4-2 after : 4-3-2-1 table.foreachi(mytable,function( i,v ))对索引从 1 开始的项进行遍历,索引不是数字的不参与遍历 local mytable= { 1,[1]="this",is="is",game="game",2 } table.foreachi(mytable,function( k,v ) -- body print(k,v) end) 结果输出 1 this 2 3 3 4 4 2 这里注意:table 中索引相同的值会被覆盖哦 table.foreach(mytable,v )遍历所有项 local mytable= { 1,2 } table.foreach(mytable,v) end) 结果输出 1 this 2 3 3 4 4 2 is is game game (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |