維基百科討論: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代码风格」。