如何在Lua中使表只讀? (特別是,與Lua 5.1的C#的Lua界面,但我不認爲這會改變任何東西) 我知道如何使用__index
和__newindex
,但這並不妨礙有人運行: math = nil
,這可能會導致進一步的腳本錯誤地執行。Lua讓表只讀
我現在的 「保護」 功能:
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!
你沒有提到你使用的是什麼Lua版本。這在這種情況下是相關的。 – Mud
我已經更新了原來的職位 – user1840819