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 出阁宴祝福语姐姐简短