像lua-check这样的工具,发现拼写错误

时间:2015-02-02 15:48:59

标签: lua

脚本语言不需要编译成exe是好的,但通常拼写错误,比如

T.abc = 10

T.abd = 10

ABC是T中的表变量,导致t.abc分配不正确 一些更极端的情况, 在测试中未找到错误t.abd = 10 但发现产品发布 该工具是否支持此语法

2 个答案:

答案 0 :(得分:0)

Lua-inspect应该能够根据动态评估检测未知的表字段:"识别未知的全局变量(白色红色)和表字段(红色),由静态和动态评估推断&# 34 ;. TypedLua也应该这样做,尽管它可能会在同一个脚本上生成比Lua-inspect更详细的输出。

答案 1 :(得分:0)

您可以使用metatable来拦截表访问。试试这个:

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)