Lua: 如何从API检查表中与指定键相关联的一个值是否为nil。

在 Lua 中,这样做是合法的:

table={}
bar
if(table[key]==nil) then
foo

然而,使用 C API,我找不到一种方法来检查指定位置是否有一个空值。

lua_getglobal(L,"table");
lua_gettable(L,key);

如果 table[key] 中存储了一个空值,lua_gettable 会给我一个 "unprotected error in call to Lua API (attempt to index a nil value)" 的消息。

有没有一种方法可以在实际推动键之前检查是否实际上与该键相关联的内容呢?

原文链接 https://stackoverflow.com/questions/2705666

点赞
stackoverflow用户189205
stackoverflow用户189205

你正在错误地调用 lua_gettable。正确的用法应该是:

lua_getglobal(L, "tableVar");
lua_pushstring(L, key);   //假设 key 是一个字符串
lua_gettable(L, -2);

lua_gettable 的第二个参数是表的栈索引,而不是键。

如果键是一个字符串,你可以使用 lua_getfield

lua_getglobal(L, "tableVar");
lua_getfield(L, -1, key);
2010-04-24 18:38:48