Lua:如何从api检查与表的指定键关联的值之一是否为nil
在lua,这样做是合法的:Lua:如何从api检查与表的指定键关联的值之一是否为nil,lua,Lua,在lua,这样做是合法的: table={} bar if(table[key]==nil) then foo 然而,使用C API,我找不到检查指定位置上是否有nil值的方法 lua_getglobal(L,"table"); lua_gettable(L,key); 如果表[key]中存储了一个nil值,lua_gettable会给我一条“调用luaapi时发生未保护的错误(尝试索引nil值)”消息 在实际按下该键之前,是否有任何方法可以检查是否确实存在与该键相关的内容?您调用的是lua
table={}
bar
if(table[key]==nil) then
foo
然而,使用C API,我找不到检查指定位置上是否有nil值的方法
lua_getglobal(L,"table");
lua_gettable(L,key);
如果表[key]中存储了一个nil值,lua_gettable会给我一条“调用luaapi时发生未保护的错误(尝试索引nil值)”消息
在实际按下该键之前,是否有任何方法可以检查是否确实存在与该键相关的内容?您调用的是
lua\u gettable
错误。应该是:
lua_getglobal(L, "tableVar");
lua_pushstring(L, key); //assuming key is a string
lua_gettable(L, -2);
lua_gettable
的第二个参数是表的堆栈索引,而不是键
如果键是字符串,则可以调用lua\u getfield
:
lua_getglobal(L, "tableVar");
lua_getfield(L, -1, key);
嘎。我想该睡觉了。谢谢你提醒我如何使用它。我知道这只是示例代码,但是你应该避免给标准库(
表
,字符串
,操作系统
,io
…)指定变量名称,特别是如果它们不是本地的。