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
热门推荐
8 足球队祝福语简短
10 老师对学校祝福语简短
11 潮汕生日谚语祝福语简短
12 对女友的简短祝福语
13 新婚过年祝福语大全简短
14 公司开年仪式祝福语简短
15 周一情人祝福语简短
16 家长祝福语大全简短内容
17 初升高祝福语家长简短
18 Q穷人结婚祝福语简短