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

我试图在 C 中实现 dir() 函数,以便能够运行此 Lua 代码:

02_dir.lua:

local function init()
 for name, filetype, size in dir("Lang") do
   print(name, filetype, size)
 end
end

dir() 在 C 中的实现方法如下:

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
点赞
用户88888888
用户88888888

你的问题在于你试图将返回值处理为一个列表,但它并不是你所想象中的那种列表。

更新你的 Lua 文件:

-- 定义一个函数
local function init()
    local name, filetype, size = dir("Lang")
    print(name, filetype, size)
end

-- 调用它 :)
init()
2016-08-06 07:46:24
用户1836540
用户1836540

这个任务完整地描述在 Roberto Ierusalimschy 的书《Programming in Lua》中。这里有一个包含完整示例和说明的链接 -- https://www.lua.org/pil/29.1.html

2016-08-08 13:43:39