有没有人知道lua 5.2中元方法__pairs
的实际实现?换句话说,我应该如何在metatable中将__pairs
实现为元方法,以便其与pairs()
完全相同?
我需要重写__pairs
并希望跳过我在表中添加的一些虚拟变量。
有没有人知道lua 5.2中元方法__pairs
的实际实现?换句话说,我应该如何在metatable中将__pairs
实现为元方法,以便其与pairs()
完全相同?
我需要重写__pairs
并希望跳过我在表中添加的一些虚拟变量。
pairs
function meta.__pairs(t)
return next, t, nil
end
next
指针: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
For reference: Lua 5.2 manual, pairs
local m={
January=31, February=28, March=31, April=30, May=31, June=30,
July=31, August=31, September=30, October=31, November=30, December=31,
}
setmetatable(m,{__pairs=
function (t)
local k=nil
return
function ()
local v
repeat k,v=next(t,k) until v==31 or k==nil
return k,v
end
end})
for k,v in pairs(m) do print(k,v) end
v
应该是一个本地变量。此外,它与默认的 pairs
相比分歧更大,这并不是必要的。 - Deduplicator