从C API在Lua中创建简单列表

时间:2016-08-05 23:36:05

标签: c lua

我正在尝试在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

2 个答案:

答案 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