我正在尝试在C中实现dir()
函数来运行这个lua代码:
02_dir.lua:
local function init()
for name, filetype, size in dir("Lang") do
print(name, filetype, size)
end
end
C语言中的 dir()
实现是这样编写的:
static int l_dir(lua_State *L)
{
lua_pushstring(L, "foo");
lua_pushstring(L, "file");
lua_pushnumber(L, 11);
return 3;
}
运行时,for
行出现此错误:
lua_pcall() failed: 02_dir.lua:2: attempt to call a string value
答案 0 :(得分:0)
您的问题是您尝试将返回值作为列表处理,并且它不是您所指的意义上的列表。
将您的Lua文件更新为:
-- Define a function
local function init()
local name, filetype, size = dir("Lang")
print(name, filetype, size)
end
-- call it :)
init()
答案 1 :(得分:0)
这个任务在Roberto Ierusalimschy“Lua编程”一书中有详细描述。这是一个完整示例和解释的链接 - https://www.lua.org/pil/29.1.html