3
예를 썼습니다.루아에서 읽기 전용 테이블을 어떻게 구현할 수 있습니까?
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
그것은 I 테이블 「TBL」의 필드에 대한 액세스를 제공 할 수 있지만, 동시에 I 필드와 관련된 값을 변경할 수 있다는 것을 의미한다.
이제 문제는 모든 중첩 테이블이이 읽기 전용 속성을 소유하도록하려는 것입니다. 어떻게 "readOnly"메소드를 향상시킬 수 있습니까?