Lua 编程中的只读表
在使用表时,只要我们知道键,我们就可以轻松访问和修改表中的值。但在某些情况下,我们希望我们的表为只读格式,以便无法修改表中的值。
这种特殊方法有很多好处,因为我们可以利用这种只读表来存储我们不希望任何人改变的信息,例如存储员工的数据。
为了使任何表成为只读表,我们使用该setmetatable()函数以及__index和__newindex元方法。
让我们首先编写一个将表作为参数的函数,然后将该表转换为只读表。
示例
考虑如下所示的功能-
function readOnly (t)
local proxy = {}
local mt = {-- create metatable
__index = t,
__newindex = function (t,k,v)
error("attempt to update a read-only table", 2)
end
}
setmetatable(proxy, mt)
return proxy
end现在让我们使用上面的函数,我们将一个表传递给上面的函数,然后尝试修改表中存在的值。
days = readOnly{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
print(days[2])--> Monday
days[2] = "Noday"输出结果stdin:1: attempt to update a read-only table
热门推荐
10 读书祝福语女生短句简短
11 感谢同事新婚祝福语简短
12 感谢教官文案祝福语简短
13 员工聚会蛋糕祝福语简短
14 元宵发客户祝福语简短
15 给团队信心祝福语简短
16 医美的祝福语大全简短
17 异国姻缘的祝福语简短
18 兄妹拍照祝福语简短的话