Main Content

Lua - Table elements v table as a whole

Archive - Originally posted on "The Horse's Mouth" - 2008-08-07 06:50:06 - Graham Ellis

Lua ... If you refer to a table name WITHOUT square brackets, you are referring to (and will effect) the whole table ... but if you refer to a table name and put something thereafter in square brackets, you are referring to just one element of the table. Actually, an almost identical story applies to other languages!

-- Whole table - no square brackets
 
people = {"Graham","Sadhana","Damien",'Ricardo',"Vanessa",'Thom'}
 
-- Just individual elements - with square brackets
 
people[7] = "Mandy"
people["Builder"] = "Bob"


Also in Lua ... if you use a for loop up to #people, or the ipairs function, you'll only loop through the consecutive elements of a table that are numbered from 1. If you use pairs instead, you'll select ALL the elements (and you can also do that with the next iterator.

print ("** This will list out until a missing index")
for k=1,#people do
  print (people[k])
end
  
print ("** print out all pairs")
for ping,pong in pairs(people) do
  print (pong,ping)
end
  
print ("** print out indexed pairs")
print ("** so it misses out named ones!")
print ("** Only gives the ones with index no.s!")
for ping,pong in ipairs(people) do
  print (pong,ping)
end


Here are the outputs from those two pieces of simple Lua code using tables run straight after each other:

** This will list out until a missing index
Graham
Sadhana
Damien
Ricardo
Vanessa
Thom
Mandy
** print out all pairs
Graham 1
Sadhana 2
Damien 3
Ricardo 4
Vanessa 5
Thom 6
Mandy 7
Bob Builder
** print out indexed pairs
** so it misses out named ones!
** Only gives the ones with index no.s!
Graham 1
Sadhana 2
Damien 3
Ricardo 4
Vanessa 5
Thom 6
Mandy 7
[trainee@easterton al]$


See here for more Lua resources - the page is a description of our course and if you click on the individual module details you'll be taken to resources specific to that particular modules - lots more examples, short articles such as this indexed by topic, etc