루아 5.2의 실제 구현을 아는 사람이 있습니까? metamethod __pairs
? 즉, 과 정확히 동일하게 작동하도록 메타 테이블에서 메타 메서드로 __pairs
을 구현하려면 어떻게해야합니까?루아 __pairs의 실제 구현은 무엇입니까?
__pairs
을 덮어 쓰고 테이블에 추가하는 더미 변수를 건너 뛰고 싶습니다.
루아 5.2의 실제 구현을 아는 사람이 있습니까? metamethod __pairs
? 즉, 과 정확히 동일하게 작동하도록 메타 테이블에서 메타 메서드로 __pairs
을 구현하려면 어떻게해야합니까?루아 __pairs의 실제 구현은 무엇입니까?
__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'는 로컬이어야합니다. 또한, 필요한 것보다 훨씬 더 많은 기본 쌍들과 갈라집니다. – Deduplicator
고마워요. 이것은 훨씬 나아졌습니다. :) – user2872907
메타 테이블 메타를 사용합니다 다음은 명시 적으로 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
들어 참조 : Lua 5.2 manual, pairs
고마워요! 이건 걸어야 해! – user2872907
http : // lua-use rs.org/wiki/GeneralizedPairsAndIpairs – hjpotter92