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

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,1,"this")
     
    print(table.concat( mytable, "-"))

输出结果

this-is-game-happly-play

table.maxn(table)

获取table中的最大索引值

#table

获取第一个连续索引的最大值

例如

    local mytable=
    {
    	[1]="a",
    	[2]="b",
     
    	[3]="15",
     
    	[100]="1500",
    	[101]="1501"
    }
     
    print(#mytable)
     
    print(table.maxn(mytable))

输出结果

    3
    101

table.remove(table,pos)

移除指定位置的元素,如果没有指定pos,则移除第一个连续索引末尾的元素。注意元素被删除后,后面的元素会往前移。

例如

    local mytable=
    {
    	[1]="a",
    	[2]="b",
     
    	[3]="15",
     
    	[100]="1500",
    	[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",
    	[2]="b",
     
    	[3]="15",
     
    	[100]="1500",
    	[101]="1501",
    	m_name="ddddd"
    }
     
    table.remove(mytable,1)
     
    for k,v in pairs(mytable) do
    	print(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",
    	[2]="b",
     
    	[3]="15",
     
    	[100]="1500",
    	[101]="1501",
    	m_name="ddddd"
    }
     
    mytable[1]=nil
     
    for i,v in ipairs(mytable) do
    	print(i,v)
    end

输出结果是:什么都没有,空的

对于不是连续索引的 其它项,我们将其置为 nil 即可,例如:

    local mytable=
    {
    	[1]="a",
    	[2]="b",
     
    	[3]="15",
     
    	[100]="1500",
    	[101]="1501",
    	m_name="ddddd"
    }
     
    mytable[100]=nil
     
    for k,v in pairs(mytable) do
    	print(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,
    	3,
    	4,
    	2
    }
    print("before : " .. table.concat( mytable,"-" ))
     
    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",
    	3,
    	is="is",
    	4,
    	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,function( k,v )

遍历所有项
例如

    local mytable=
    {
    	1,
    	[1]="this",
    	3,
    	is="is",
    	4,
    	game="game",
    	2
    }
     
    table.foreach(mytable,function( k,v )
    	-- body
    	print(k,v)
    end)

结果输出

    1	this
    2	3
    3	4
    4	2
    is	is
    game	game


你可能感兴趣的:(Lua,入门学习教程)