Lua 中table.concat 连接 函数

table.concat(table, sep,  start, end) 

concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长. 

看到网上的一些例子方便大家更好的理解:

do
    --> table.concat  连接 函数

    tab = {"a", "c", "d", "b"}

    --(1)
    -- 一个参数,参数为 表(tab),作用为连接 tab 
    -- 中所有的 value

    print(table.concat(tab))   
    --> 输出结果: acdb

    --(2)
    -- 两个参数,参数一:表(tab),参数二:分隔符(nil),
    -- 作用为连接tab中所有的value,value 间以 nil 隔开

    print(table.concat(tab, nil))  
    --> 输出结果: acdb

    --(3)
    -- 三个参数,参数一:表(tab),参数二:分隔符 (" @@ "),
    -- 参数三:起始位置(2),作用为连接tab中所有的value,
    -- value 间以 " @@ " 隔开, 从 tab 的第二个value开始连接,
    -- 到 tab 的 end 

    print(table.concat(tab, " @@ ", 2))  
    --> 输出结果: c @@ d @@ b

    --(4)
    -- 四个参数,参数一:表(tab),参数二:分隔符 (" - "),
    -- 参数三:起始位置(2),参数四:结束连接位置,作用为连
    -- 接tab中所有的value,value 间以 " - " 隔开, 从 tab 
    -- 的第二个value  开始连接,到 tab 的 第 3 个 value结束连接

    print( table.concat(tab, " - ", 2, 3))  
    --> 输出结果: c - d


    print(table.concat(tab, " ## \n", 2, 4))   
    --> 输出结果:
    --> c ##
    --> d ##
    --> b


    --(5)
    for i,v in ipairs(tab) do
        print(i,v)
    end

    --> 输出结果:
    -- 1      a
    -- 2      c
    -- 3      d
    -- 4      b

    -- 说明 table.concat 不会改变 原始 table 即(tab) 的结构
end

 

为什么要使用table.concat去连接字符呢,使用一个for循环完全可以胜任?这是因为使用for循环会花费更多的时间

table.concat,concat函数对字符串连接进行了优化,即使进行大量的连接操作,也不会消耗多少时间。

你可能感兴趣的:(lua)