Luaでテーブルを読み取り専用にするにはどうすればよいですか? (具体的には、C# 用の Lua 5.1 を使用した LuaInterface ですが、それによって何も変わるとは思いません) __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!