Lua - 实现用户数据迭代器

问题描述:

Lua 5.2 我需要迭代userdata变量。 据我所知,我可以使用getmetatable__pairs。像这样:Lua - 实现用户数据迭代器

for k, v in getmetatable(userdataVariable).__pairs do 
    -- someting 
end 

但是当我试图做到这一点时,我得到'试图调用一个零值'。

我发现了一个__pairs实现此:what is actual implementation of lua __pairs?

function meta.__pairs(t) 
    return function(t, k) 
    local v 
    repeat 
     k, v = next(t, k) 
    until k == nil or theseok(t, k, v) 
    return k, v 
    end, t, nil 
end 

但我不明白我应该theseok呢?我应该在这里定义什么函数?

+0

我不认为你需要它,实际上。 [看看这里](https://github.com/ThePhD/sol2/issues/146) –

我认为你正在寻找__index元表。