Lua语法小贴士(四)字符串缓冲

[复制链接]
查看958 | 回复2 | 2022-5-15 11:45:56 | 显示全部楼层 |阅读模式
我们在写Lua代码的时候,如果需要对一个字符串进行反复的连接操作的话,会造成极大的性能开销。因为字符串是不可变的值,所以当我们对字符串操作的时候,每次都会生成一个新的字符串。例如我们需要对一个10000字节的字符串str增加一个字符的时候,就会创建一个10001字节的字符串str_copy,然后再复制str到str_copy里面。所以我们需要字符串缓冲(string buffer)来解决这个问题,而Lua里面,string buffer就可以使用table来实现。

local t = {}
local test = {"a","x","def","type","fire","time","bottle","xo","wtf"}
for i, var in ipairs(test) do
    t[#t+1] = var
    t[#t+1] = "\n"
end
local s = table.concat(t)
print(s)

当然我们也可以指定一个分隔符作为table.concat方法的第二个参数:
local t = {}
local test = {"a","x","def","type","fire","time","bottle","xo","wtf"}
for i, var in ipairs(test) do
    t[#t+1] = var
end
t[#t+1] = ""
local s = table.concat(t,"\n")
print(s)



回复

使用道具 举报

17084437121 | 2022-5-18 16:51:42 | 显示全部楼层
加油升级 提升权限和积分
回复

使用道具 举报

wwacbffo | 2024-1-20 11:23:24 | 显示全部楼层
已阅即拥有!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则