维基百科讨论:Lua代码风格

Artoria2e5在话题“字符串拼接风格”中的最新留言:8年前

字符串拼接风格

一些模块,例如模块:Articles by Quality and Importance,混用字串拼接运算符 foo = foo .. 和形如 foo = string.format('%s....') 的字符串格式化来在字串后加内容。这样一方面有点乱,另一方面 string.format 的性能也不好看。如果可以接受的话,应该考虑全用拼接运算符(对我来说更可读,因为不用看第几个参数是什么了),甚至可以直接做个 table 用 table.concat

如果用 table.concat 的话,大概还是稍微点缀一点字符拼接操作看上去会更可读:

local builder = {}

-- 这样
builder[#builder+1] = '<td blah="' .. blah .. '">' .. blahblah .. '</td>'
-- 这样也能接受(效果降低到避免全 builder 复制)
builder[#builder+1] = string.format('<td blah="%s">%s</td>', blah, blahblah)
-- 这个没有 global 载入,因此速度稍快;同时对用 "foo".format() 的 python 用户更亲切
local footemplate = '<td blah="%s">%s</td>' -- outside of loop
builder[#builder+1] = footemplate:format(blah, blahblah)

-- 总之不能这样
builder[#builder+1] = '<td blah="'
builder[#builder+1] = blah
builder[#builder+1] = '">'
builder[#builder+1] = blahblah
builder[#builder+1] = '</td>'

-- 最后 return 的时候
builder[#builder+1] = '</table>'
return table.concat(builder)


--Artoria2e5 更改·工具 2016年5月20日 (五) 17:40 (UTC)回复

返回到项目页面“Lua代码风格”。