lua中__pairs函数是如何具体实现的?

2026-06-05 11:005阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计218个文字,预计阅读时间需要1分钟。

lua中__pairs函数是如何具体实现的?

不知道有人知道lua 5.2的实现在metatable中如何实现__pairs作为metamethod,以便它与pairs()完全相同?我需要覆盖__pairs并想跳过我在表中添加的一些虚拟变量。以下是我的尝试:

lualocal mt={ __pairs=function(t) local keys={} for k, v in pairs(t) do if type(k) ~=number then table.insert(keys, k) end end return keys, t end}

这段代码是否能实现我的需求?

有没有人知道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

lua中__pairs函数是如何具体实现的?

本文共计218个文字,预计阅读时间需要1分钟。

lua中__pairs函数是如何具体实现的?

不知道有人知道lua 5.2的实现在metatable中如何实现__pairs作为metamethod,以便它与pairs()完全相同?我需要覆盖__pairs并想跳过我在表中添加的一些虚拟变量。以下是我的尝试:

lualocal mt={ __pairs=function(t) local keys={} for k, v in pairs(t) do if type(k) ~=number then table.insert(keys, k) end end return keys, t end}

这段代码是否能实现我的需求?

有没有人知道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

lua中__pairs函数是如何具体实现的?