Lua 入门学习教程(一) Table 函数库

Lua 入门学习教程(一) Table 函数库,第1张

概述table.concat( tablename, “, “, start_index, end_index ) 连接 table 中的第一个索引连续的多项 例如 local mytable={"this","is","game"} --不指定分隔符、开始index(默认1)、结束index(默认maxn) print(table.concat( mytable) 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
总结

以上是内存溢出为你收集整理的Lua 入门学习教程(一) Table 函数库全部内容,希望文章能够帮你解决Lua 入门学习教程(一) Table 函数库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1243663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存