如何在 Lua 中将表设为只读?(特别是用于 C# 的 LuaInterface 与 Lua 5.1,但我认为这不会改变任何东西)我知道如何使用__index
and __newindex
,但这并不能阻止某人运行:
math = nil
,这可能会导致进一步的脚本错误地执行。
我目前的“保护”功能:
function protect(table)
return setmetatable({}, { __index = table,
__newindex = function(table, key, value) error("attempted to modify a read only table")
end, __metatable = false }) end
math = protect(math)
math.sqrt = nil // successfully protected
math = nil // this is bad and can happen!