--创建只读表函数
local function makeReadonly(t)
local proxy={};
local mt={}
mt.__index=t;--指向源表t 禁止修改
mt.__newindex=function() --禁止添加新键值对
print("不能修改只读表");
end
setmetatable(proxy,mt);
return proxy;
end
--测试
tl={a=1,b=2};
tl=makeReadonly(tl);
--修改键值
tl.a=3;
--添加新键
tl.c=6
--[[
通过这种方式,可以有效地防止表的意外修改,这在配置表或常量数据的管理中非常有用。需要注意的是,这种方法并不是绝对安全的,因为如果有人直接操作Lua的底层C API,或者使用rawset等绕过元表的方法,仍然可以修改表。因此,只读表提供的是一种便利的抽象,而不是完全的安全保障。
--]]
只读表(lua元表)
最新推荐文章于 2024-09-30 16:29:12 发布