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函数对字符串连接进行了优化,即使进行大量的连接操作,也不会消耗多少时间。