Lua:如何从api检查与表的指定键关联的值之一是否为nil

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

在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
…)指定变量名称,特别是如果它们不是本地的。