News for hackers. Stuff that matters.
Re:MoonScript, a programmer friendly language that compiles ... by rweichler on Monday May 29, 2017 @08:27PM (#14442291)
Metatables are your friend.

    -- LuaJIT
    
    local oldG = _G
    local newG = setmetatable({}, {
        __index = oldG,
    })
    setmetatable(oldG, {
        __index = function(t, k)
            return rawget(newG, k)
        end,
        __newindex = function()
            error('attempt to assign global variable')
        end,
    })
    _G = newG
If you want to assign a global variable, `x = 5` will error but `_G.x = 5` won't.

There are no comments on this comment yet.