1 function tableReadonly(t) 2 local mt = { 3 __index = t, 4 __newindex = function(tb, k, v) 5 if nil == tb[k] then --允许添加成员 6 rawset(tb, k, v) 7 return 8 end 9 error("只读, 不可修改") 10 end 11 } 12 setmetatable(t, mt) 13 end
# 使用场景,比如使用lua作为配置表, 为了防止手误不小心改了配置表的值而引起bug,可以将配置表包装为只读。