有一些工具,例如lua-check,可以发现拼写错误。

脚本语言不需要编译成 exe 很好,但常常会出现拼写错误,例如

T.abc = 10

实际想要写的是

T.abd = 10

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

点赞
用户1442917
用户1442917

Lua-inspect 应该能够基于动态评估检测未知的表字段:"通过静态和动态评估推断出未知的全局变量(红白相间)和表字段(红色)"。 TypedLua 也应该能够实现这一点,虽然在相同脚本上,它可能会生成更详细的输出。

2015-02-02 15:58:09
用户107090
用户107090

你可以使用元表拦截表的访问。试试这个:

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)
2015-02-02 16:18:16