Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C API在Lua中创建简单列表_C_Lua - Fatal编程技术网

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

从C API在Lua中创建简单列表,c,lua,C,Lua,我正在尝试在C中实现dir()函数,以便能够运行此lua代码: 02\u董事卢阿: 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

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

02\u董事卢阿:

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

您的问题是,您试图将返回值作为一个列表来处理,而它不是您所指的列表

将Lua文件更新为:

-- Define a function
local function init()
    local name, filetype, size = dir("Lang")
    print(name, filetype, size)
end

-- call it :)
init()

您的问题是,您试图将返回值作为一个列表来处理,而它不是您所指的列表

将Lua文件更新为:

-- Define a function
local function init()
    local name, filetype, size = dir("Lang")
    print(name, filetype, size)
end

-- call it :)
init()

Roberto Ierusalimschy的《Lua中的编程》一书对这项任务进行了充分的描述。这里有一个完整示例和说明的链接--

这项任务在Roberto Ierusalimschy的《Lua编程》一书中有详细描述。这是一个带有完整示例和解释的链接--

包括注册
l\u dir
的行。如果通过这种方式调用,dir应该是一个迭代器函数,返回一个表并使用
pair
将完成相同的工作。包括注册
l\u dir
的行。如果通过这种方式调用,dir应该是一个迭代器函数,返回一个表,并使用
pair
执行相同的操作。