2014年10月13日 星期一

LUA read only table

-----------------------------------------------
-- file DIR.lua

function readOnly (table)
  local proxy = {}
  local mt = {       -- create metatable
    __index = table
    ,__newindex = function (x,k,v)
      error("read-only "..k, 2)
    end
    ,__metatable = false
  }
  setmetatable(proxy, mt)
  return proxy
end

local t = { LEFT = 7, RIGHT = 8 }
DIR = readOnly(t)

---------------------------------------------
-- file test.lua
dofile("DIR.lua")

print("t="..tostring(t))

print("LEFT="..DIR.LEFT)
-- DIR.LEFT = 9                -- : read-only LEFT
print("LEFT="..DIR.LEFT)

mt = getmetatable(DIR)
print("mt="..tostring(mt))

---------------------------------------------
-- output
t=nil
LEFT=7
LEFT=7
mt=false

沒有留言:

張貼留言

別說人生 沒意義

  活著 本身就 很有 意義 !  在當代 億萬人群 中,不然 千秋萬代人 總有 能人 能找到 更多更好 的 意義.