[Lua] Qual a diferença de 'in pairs' e 'in ipairs'?
ipairs
O ipairs()
retorna um iterador de pares chave-valor ordenado. Ele só itera a partir de chaves númericas, precisando ser necessariamente sequenciais, começando do 1 e não tendo nenhum furo entre as chaves.
pairs
Já o pairs()
retorna um iterador de ordem arbitrária, ele funciona independente da chave estabelecida, podendo ser de qualquer tipo.
Veja um exemplo para entender as diferenças:
local table = {
var = 2,
var1 = 1,
'usb',
'keyword',
[3] = 'vscode',
[5] = 'Deschamps',
[6] = 'tabnews'
}
print('pairs:')
for index, value in pairs(table) do
print(index, value)
end
print('\nipairs:')
for index, value in ipairs(table) do
print( index, value)
end
Saidas:
pairs:
+ 1 usb
+ 2 keyword
+ var 2
+ var1 1
+ 3 vscode
+ 5 Deschamps
+ 6 tabnews
ipairs:
+ 1 usb
+ 2 keyword
+ 3 vscode