What is the difference between pairs and ipairs?
Lua tables are general data structures that have an ‘array-like’ and a ‘map-like’ part. The idea is that you can use them efficiently as resize-able arrays with integer indices, but can also index them with any other value as a hash map. pairs(t) gives a general iterator over all the keys and values in a table, numerical or not, in no particular order; ipairs(t) goes over the array part, in order.