Ищет ли next() метаметод __pairs?
В общем, синтаксис:
for k, v in pairs(t) do
....
end
эквивалентно:
for k, v in next, t do
....
end
Но что, если t
имеет __pairs
Метаметод? Будет стандарт next()
проверка функции для этого? Если нет, то не лучше ли всегда использовать pairs
при переборе таблиц и никогда не вызывать next()
напрямую?
1 ответ
Решение
Нет, next()
не проверяет __pairs
, Руководство не говорит так.
Это может быть дважды подтверждено из соответствующего исходного кода, сравните luaB_pairs
а также luaB_next
,
Могут быть случаи, когда вы не хотите проверять __pairs
метаметод, так почему же говорите всегда использовать pairs
над next
?