使用 Lua 已经不少时间了,遇到 “table index is nil” 的错误也很多次了,久而久之自己便形成了 Lua table 索引不能为 nil 的概念....] = 0
但是如果我们仅使用 nil 为索引进行 table 取值的话,实际上并不会引起错误,仅是返回 nil 罢了:
local t = {}
-- use nil as table index
-...- v is nil
local v = t[nil]
网上简单搜索了一下,未找到直接相关的答案,那就直接看看 Lua 源码(5.3.5 版本)吧~
其实答案还是挺简单的:
luaH_get 函数(索引...table 取值会调用到这个函数)中对于索引为 nil 的取值直接返回了 nil (并没有报错):
// ltable.c
const TValue *luaH_get (Table *t, const...(L, "table index is nil");
// ...
}
不过从开发角度来讲,个人还是建议统一规避 index 为 nil 的情况,上面提及的 “Lua table 索引不能为