加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读