Hola a todos, hoy os voy a explicar que son y para que sirven pairs e ipairs.
Pairs e ipairs son dos funciones que nos permite recorrer las propiedades de un objeto.
Como comente en este manual:
Los arrays se pueden comportar como objetos y recordar que podemos meter propiedades numéricas y de cadena, algo así:
|
1 2 3 4 5 6 7 8 9 |
array = {} array[0] = 10 array["hola"] = "hola" array["amigos"] = "amigos" array[1] = 20 array["que"] = "que" array["tal"] = "tal" array[2] = 30 |
La función ipairs lo que hace es devolver aquellas indices numéricos, no las propiedades que hayamos creado con cadenas, por ejemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
array = {} array[0] = 10 array["hola"] = "hola" array["amigos"] = "amigos" array[1] = 20 array["que"] = "que" array["tal"] = "tal" array[2] = 30 print("Ipairs") for key,value in ipairs(array) do print("Key: " .. key) print("Value: " .. value) end |
El resultado es el siguiente:

La función pairs lo que hace es devuelve todos los indices del objeto, sean numéricos o no, por ejemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
array = {} array[0] = 10 array["hola"] = "hola" array["amigos"] = "amigos" array[1] = 20 array["que"] = "que" array["tal"] = "tal" array[2] = 30 print("Pairs") for key,value in pairs(array) do print("Key: " .. key) print("Value: " .. value) end print() |

Os dejo el ejemplo completo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
array = {} array[0] = 10 array["hola"] = "hola" array["amigos"] = "amigos" array[1] = 20 array["que"] = "que" array["tal"] = "tal" array[2] = 30 print("Pairs") for key,value in pairs(array) do print("Key: " .. key) print("Value: " .. value) end print() print("Ipairs") for key,value in ipairs(array) do print("Key: " .. key) print("Value: " .. value) end |
Este es el resultado:

Espero que os sea de ayuda. Si ten
Esto no puede ser posible, el resultado de pairs está debajo del código ipairs, y el resultado de ipairs también está debajo de pairs en lugar de estar en donde corresponde, no así, causaría confusiones