【语法算法】
table.concat 的分隔符本质就这一行:
table.concat(t, ",")
第二个参数是分隔符——不传默认空串——分隔符的本质就是"元素之间的粘合剂"——分隔符不同,拼接结果的形态完全不同。今天拆开。
一、空串、逗号、自定义三段
分隔符的三段。空串:table.concat(t) 不传分隔符默认空串——所有元素直接粘在一起——适合数字拼接。逗号:table.concat(t, ",") 用逗号分隔——CSV 格式的最简实现。自定义:table.concat(t, " | ") 用竖线分隔——分隔符可以是任意长度的字符串——分隔符越复杂,拼接结果的层次感越强。三段连起来:concat 玩的是"分隔符决定输出形态"——同一个表,不同分隔符拼出完全不同的结果——分隔符就是数据格式化的最小控制旋钮。
graph TD
A["t = {'a','b','c'}"] --> B["concat(t)"]
B --> C["'abc'"]
A --> D["concat(t, ',')"]
D --> E["'a,b,c'"]
A --> F["concat(t, ' | ')"]
F --> G["'a | b | c'"]
二、分隔符的正确写法
local t = {"apple", "banana", "cherry"}
local s1 = table.concat(t)
print(s1) -- applebananacherry
local s2 = table.concat(t, ", ")
print(s2) -- apple, banana, cherry
local s3 = table.concat(t, " → ")
print(s3) -- apple → banana → cherry
local n = {1, 2, 3}
local s4 = table.concat(n, "+")
print(s4) -- 1+2+3
分隔符可以是任意字符串——甚至可以是多字符的复杂分隔符——分隔符的选择就是输出格式的选择。
三、空表的边界与性能的考量
空表的 concat 返回空串——不会报错——空表 concat 是安全的。性能也值得一提:concat 一次性分配结果字符串的内存——比分次 .. 拼接快得多——循环拼接超过十次就该用 concat。最后一条纪律:分隔符不要包含元素本身可能包含的字符——比如 CSV 格式的分隔符是逗号,但元素里可能也有逗号——这种情况要么换分隔符,要么对元素做转义——分隔符冲突是数据交换最常见的坑。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 再抛一个老问题:奶量是固定好还是浮动好?固定回五十的术式,满血喝是五十、残血喝也是五十,账目清楚,可总差点意思…
【游戏功能】 前阵子一场"永动机事故"在群里传了半天:某个会喷火的精英怪被玩家围了一整晚,火喷了八个钟头没停——后台一看,它…
【游戏功能】 mode=mode==='red'?'blue':'red' ——先拆这一行。一个变量存着当前纹色,三元运算符…
【游戏功能】 上一版埋了个查了半宿的隐蔽报错:测试组报"玩家血条归零了人还站着",后台的死亡日志一条没有,复活接口也没被调过…
【游戏功能】 先抛一个坑:增益为什么只能自己挂?怒气、护体、神行,攻略里全在教你"什么时候开自己的招",可怪身上明晃晃挂着的…
【游戏功能】 昨天夜里一场线上事故把"反纹"顶上了台面:一个玩家把反纹挂在自己身上站桩挂机,怪的火球过来他没倒,反倒躺下的是…