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 生日开业蛋糕祝福语简短