Я написал пример.Как можно использовать таблицу только для чтения в lua?
function readOnly(t)
local newTable = {}
local metaTable = {}
metaTable.__index = t
metaTable.__newindex = function(tbl, key, value) error("Data cannot be changed!") end
setmetatable(newTable, metaTable)
return newTable
end
local tbl = {
sex = {
male = 1,
female = 1,
},
identity = {
police = 1,
student = 2,
doctor = {
physician = 1,
oculist = 2,
}
}
}
local hold = readOnly(tbl)
print(hold.sex)
hold.sex = 2 --error
Это означает, что я могу дать доступ к полю таблицы «ТПС», но в то же время, я не могу изменить значение, связанное с полем.
Теперь проблема заключается в том, что я хочу, чтобы все вложенные таблицы имели это свойство только для чтения .Как можно улучшить метод readOnly?