2015-04-11 8 views
8

Im Allgemeinen ist die Syntax:Sucht next() nach einem __pairs metamethod?

for k, v in pairs(t) do 
    .... 
end 

entspricht:

for k, v in next, t do 
    .... 
end 

Aber was, wenn t hat eine __pairs metamethod? Wird der Standard next() Funktion dies überprüfen? Wenn nicht, ist es nicht besser, immerpairs beim Iterieren über Tabellen zu verwenden, und niemals next() direkt anrufen?

Antwort

5

Nein, next() prüft nicht auf __pairs. The manual sagt das nicht.

Es kann aus dem zugehörigen Quellcode doppelt bestätigt werden, vergleiche luaB_pairs und luaB_next.

Es kann vorkommen, dass Sie nicht für __pairs metamethod überprüfen möchten, also warum sagen immer Verwendung pairs über next?

Verwandte Themen