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

更新於: 2021 年 7 月 19 日

695 次瀏覽

開啟 職業生涯

完成課程,獲得認證證書

開始學習
廣告
© . All rights reserved.