Lua - 实现 userdata 迭代器

Lua 5.2 我需要迭代一个 userdata 变量。 据我所知,我可以使用 getmetatable__pairs 来实现,就像这样:

for k, v in getmetatable(userdataVariable).__pairs do
  -- something
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?在这里应该定义什么函数?

点赞
用户5147427
用户5147427

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

2017-05-13 23:17:07