lua-check 之类的一些工具,发现拼写错误

some tools like lua-check, found out spelling wrong

脚本语言不用编译成exe就好,但经常拼写错误,赞

T.abc = 10

书面

T.abd = 10

ABC是T中的一个table变量,导致t.abc赋值不正确 一些更极端的情况, 测试中未发现错误t.abd = 10 但在产品发布时发现 工具是否支持这种语法

Lua-inspect should be able to detect unknown table fields based on dynamic evaluation: "identifies unknown global variables (white-on-red) and table fields (red), inferred by static and dynamic evaluation". TypedLua 也应该这样做,尽管它可能会生成比 Lua-inspect 在同一脚本上更详细的输出。

您可以使用元table 拦截table 访问。试试这个:

local function test(t,k)
    if t[k]==nil then
        error("invalid field "..k)
    end
end

local function newtable(fields)
    return setmetatable({},{
        __index=function (t,k) test(fields,k) end,
        __newindex=function (t,k,v) test(fields,k) rawset(t,k,v) end
    })
end

T=newtable({ abc=true, xyz=true})

print(T.abc)
T.abc = 10
print(T.abc)
T.acb = 10
print(T.acb)