Lua 程式設計中的只讀表
使用表時,我們可以輕鬆地訪問和修改表中存在的值,前提是已知鍵。但是在某些情況下,我們希望表採用只讀格式,這樣無法修改表中存在的值。
這種特定方法有很多優點,因為我們可以使用此類只讀表來儲存我們不希望任何人修改的資訊,例如儲存員工資料。
為了使任何表成為只讀表,我們使用 **setmetatable()** 函式以及 **__index** 和 **__newindex** 元方法。
我們首先編寫一個函式,該函式將表作為引數,然後將該錶轉換為只讀表。
示例
請考慮以下所示的函式 -
function readOnly (t)
local proxy = {}
local mt = {-- create metatable
__index = t,
__newindex = function (t,k,v)
error("attempt to update a read-only table", 2)
end
}
setmetatable(proxy, mt)
return proxy
end現在,我們來使用上述函式,我們將一個表傳遞到上述函式中,然後嘗試修改表中存在的值。
days = readOnly{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}
print(days[2])--> Monday
days[2] = "Noday"輸出
stdin:1: attempt to update a read-only table
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP