当前位置 : 主页 > 网络编程 > lua >

什么是lua __pairs的实际实现?

来源:互联网 收集:自由互联 发布时间:2021-06-23
有没有人知道lua 5.2的实际实现. metamethod __pairs?换句话说,如何在metatable中实现__pairs作为metamethod,以便它与pairs()完全相同? 我需要覆盖__pairs并想跳过我在表中添加的一些虚拟变量. 以下
有没有人知道lua 5.2的实际实现. metamethod __pairs?换句话说,如何在metatable中实现__pairs作为metamethod,以便它与pairs()完全相同?

我需要覆盖__pairs并想跳过我在表中添加的一些虚拟变量.

以下将使用metatable元明确提供对默认行为:

function meta.__pairs(t)
  return next, t, nil
end

现在,为了跳过特定元素,我们必须替换返回的下一个:

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

供参考:Lua 5.2 manual, pairs

网友评论