Lua中只读表和只允许修改表

Lua中的table表非常灵活强大,可以随时加入和修改,但有时在多人协作和

一些项目中有些凌乱,我们可以利用元表的性质来保护我们的一些表格。

1.Lua中的只读表

 function ReadOnlyTable (t)
  local proxy = {}
  local mt = {
   __index = t,
   __newindex = function (t,k,v)
    error("attempt to update a read-only talbe",2)
   end
  }
  setmetatable(proxy,mt)
  return proxy

2.只允许查改操作的表

 1  local function ReadUpdateOnly (t)
 2    local proxy = t or {}
 3    local mt = {
 4     __newindex = function (t,k,v)
 5        error("只能初始化时对该表定义",2)
 6     end
 7    }
 8    setmetatable(proxy,mt)
 9    return proxy
10  end