微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是lua __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,nil
end

供参考:Lua 5.2 manual,pairs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐