Lua table concat
【1】table concat 简介
使用方式:
table.concat(table, sep, start, end)
作用简介:
concat是concatenate(连锁、连接)的缩写。
table.concat()函数列出指定table的数组部分从start位置到end位置的所有元素,元素间以指定的分隔符(sep)隔开。
除了table外,其余参数都不是必需的:
sep分隔符的默认值是空字符, start的默认值是1,end的默认值是数组部分的总长。
虽然sep, start, end都不是必需参数,但需明确实参赋值先后顺序机制与C语言的类似,即若指定靠后的参数值, 必须同时指定前面的参数。
【2】学习示例
(2.1)数字下标连续(数组table 与列表table)
-- 数字下标连续 -- tabTemp1 local tabTemp1 = { "c", "c++", "lua", "kotlin", "python", "go", "sql", "php" }; print("length1: " .. (#tabTemp1)) print(table.concat(tabTemp1, ";")) -- tabTemp2 local tabTemp2 = { [1] = "c", [2] = "c++", [3] = "lua", [4] = "kotlin", [5] = "python", [6] = "go", [7] = "sql", [8] = "php" }; print("length2: " .. (#tabTemp2)) print(table.concat(tabTemp2, ";")) -- tabTemp3 local tabTemp3 = { "c", "c++", "lua", a = 10, b = 20, "kotlin", "python", "go", "sql", "php" }; print("length3: " .. (#tabTemp3)) print(table.concat(tabTemp3, ";")) -- tabTemp4 local tabTemp4 = { "c", "c++", "lua", a = 10, b = 20, "kotlin", "python", "go", "sql", "php", [9] = "java", [10] = "swift" }; print("length4: " .. (#tabTemp4)) print(table.concat(tabTemp4, ";"))\ --[[ length1: 8 c;c++;lua;kotlin;python;go;sql;php length2: 8 c;c++;lua;kotlin;python;go;sql;php length3: 8 c;c++;lua;kotlin;python;go;sql;php length4: 10 c;c++;lua;kotlin;python;go;sql;php;java;swift --]]
说明:
[1] 根据table的原理,其实,tabTemp1和tabTemp2本质是同一个table表,所以结果是相同的。
[2] table为数组或者是下标为1开始的有序列表时,说明concat方法操作一切正常。
(2.2)下标不连续(其他)
-- 数字下标不连续 -- tabTemp1 local tabTemp1 = { "c", "c++", "lua", a = 10, "119", "120", [6] = "python", [8] = "go", [15] = "sql", [19] = "end" }; print("length1: " .. (#tabTemp1)) print(table.concat(tabTemp1, ";")) -- tabTemp2 local tabTemp2 = { "c", "c++", "lua", a = 10, "119", "120", [6] = "python", [10] = "go", [15] = "sql", [19] = "end" }; print("length2: " .. (#tabTemp2)) print(table.concat(tabTemp2, ";")) -- tabTemp3 local tabTemp3 = { "c", "c++", "lua", a = 10, "119", "120", [3] = "python", [15] = "sql" }; print("length3: " .. (#tabTemp3)) print(table.concat(tabTemp3, ";")) -- tabTemp4 local tabTemp4 = { [2] = "c", "c++", "lua", a = 10, "119", "120", [6] = "python", [8] = "go", [15] = "sql", [19] = "end" }; print("length4: " .. (#tabTemp4)) print(table.concat(tabTemp4, ";")) --[[ length1: 6 c;c++;lua;119;120;python length2: 6 c;c++;lua;119;120;python length3: 5 c;c++;lua;119;120 length4: 4 c++;lua;119;120 --]]
(2.3)下标没有从1开始
-- 数字小标不从1开始 -- tabTemp local tabTemp = { [2] = "c", a = 10, b = 20, [6] = "python", [8] = "go", [15] = "sql", [19] = "end" }; print("length: " .. (#tabTemp)) print("concat ret: ".. table.concat(tabTemp, ";")) --[[ length: 0 concat ret: --]]
如上实例,仔细分析。
【3】总结
(1)第三个参数end,即table的长度非常关键。
(2)concat函数操作的table都是一个数组或者列表,也就是下标必须从一开始的连续数列。
(3)当下标不是从1开始时,且没有数组或列表元素时,concat连接结果为空。
Good Good Study, Day Day Up.
顺序 选择 循环 总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2018-08-13 类中静态成员变量 && 无法解析的外部符号
2018-08-13 SVN && BeyondCompare