lua - 创建只读表

通过lua本身的元表和元方法,加上代理的思想实现。

具体如下

function errorHandle(str)
    print("=================LUA ERROR:=================")
    if str then
        print(str)
        print("--------------------------------------------")
    end
    print(debug.traceback())
    print("--------------------------------------------")
end

function readOnly(t)
    local proxy = {}
    local mt = {
        __index = t,
        __newindex = function (t, k, v)
            errorHandle("attempt to update a read-only table")
        end
    }
    setmetatable(proxy, mt)
    return proxy
end

function mainFunc()
    
    local days = readOnly{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}
    print(days[1])
    days[2] = "Noday"
end

xpcall(mainFunc, errorHandle)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值