2016-08-05 112 views
1

我想实现用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; 
} 

我在上得到这个错误行运行时:

lua_pcall() failed: 02_dir.lua:2: attempt to call a string value 
+1

包括你注册'l_dir'的行。 – a3f

+0

如果以这种方式调用,dir应该是一个迭代器函数,返回一个表并使用'pair'将执行相同的工作。 – zzn

回答

0

你的问题是,你要处理的返回值作为一个表,它是不是在你的意思意义上的名单。

更新您的Lua文件阅读:

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

-- call it :) 
init()