Overview
You can make as many variables as you like to store information in a program, but it can also be useful to put those variables together. Tables are a way to store lists of variable data, which keeps things organized and lets repeat code for each variable in the list.
Tables
Key-Value Tables
A variable is a label with some data. It has two parts, the label (what you named the variable) and the data it represents (the string, number, or Boolean that you assigned it to). In a table, that label becomes a key, because you will use it to “look up” the value.
Create a Table with Key-Value Pairs
The {}
characters are used to create tables, and the =
is used to assign a key to a value, and you separate the values with ,
.
Examples:
local producePrices = {strawberries = 3, tomatoes = 8, pumpkins = 500}
local playerStats = {
highScore = 15320,
totalPlays = 895
}
Code language: Lua (lua)
Access a Value
You can find a value in a table using the key in ""
inside of []
.
You can also use .
followed by the key name to get a value.
Examples:
local favoriteGame = {
player1 = "Roll 'Em",
player2 = "Core Royale"
}
print(favoriteGame["player2"])
local player = {
name = "Slinkous",
id = 5000
}
print(player.name)
Code language: Lua (lua)
Add a new Value
You can add a element to a table by assigning its key inside of ""
in []
to a value with =
.
Examples:
local zooAnimals = {
giraffe = "Eloise",
lion = "Mufasa",
bear = "Smokey"
}
zooAnimals["octopus"] = "Paul"
Code language: Lua (lua)
Numbered Tables
Keys and values let you store information with labels, but you can also use tables to just make a list of data. In this case, Lua automatically makes the keys for you, as numbers.
Create a Numbered Table
You can create a numbered table the same way you make one with keys and values using {}
, but by only listing the values.
Examples:
local groceryList = {"apples", "bananas", "oranges"}
print(groceryList[3])
local luckyThings = {"four-leaf clover", 13, "rolling a 20"}
print(luckyThings[1])
Code language: Lua (lua)
Unlike with a key-value table, you cannot use .
to access a value
Access the Last Value
With a numbered table, you can use #
to find out how many items are in the table. This can be useful if you want to find out what the last thing is, or if you want to add a new one.
Examples:
local friends = {"Basilisk", "Daddio", "Montoli"}
print("I have " .. #friends .. " friends!")
friends[#friends + 1] = "Carbide"
print(friends[#friends].. " is my newest friend!")
Code language: Lua (lua)
Tables Within Tables
If you make a table with a variable name, this will make an numbered table, NOT a key-value pair.
You can also create tables within tables. This can be useful when you want a list where each member has more information.
Examples:
local shape1 = "sphere"
local shape2 = "cube"
local shapeList = {shape1, shape2}
print(shapeList[2])
local scoreboard = {
{
name = "CoolestPlayer",
score = 5001
},
{
name = "TriedMyBest",
score = 12
}
}
print(scoreboard[1].name .. " scored: " .. scoreboard[1].score)
print(scoreboard[2].name .. " scored: " .. scoreboard[2].score)
Code language: Lua (lua)
Iteration
One of the best uses a table is to be able to perform code on each member of it. You do this by creating a loop that repeats code a certain number of times, and repeating that code for each member of the group, iterating.
Loops
Loops are one of the most important structures in coding, given how often we need to repeat instructions until we get a result. In this course, we will focus on the for-loop.
The basic for
loop creates an iterator, a number variable (usually labeled i
) to start with and increases it each time it repeats until it hits the number to stop on.
Example:
for i=1, 10 do
print(i .. "...")
end
Code language: Lua (lua)
Pairs
To use a for-loop on a key-value table, we need to use the pairs() function so that Lua knows me mean for it to repeat the code across each value.
Example:
local cat = {
color = "tabby",
age = 14,
name = "Agatha"
}
for key, value in pairs(cat) do
print("The cat's " .. key .. " is: " .. value)
end
Code language: Lua (lua)
The names key
and value
here can be anything. They are variable names that will stand in for the key and value of each pair.
IPairs
For numbered tables, you can use the ipairs()
function to create pairs with the number and the value. Remember that we often use i
for the number, since we are iterating
Often times you never actually use the number in your code, and programmers use _, value
to show that
Examples:
local raceFinish = {"tortoise", "hare"}
for i, finisher in ipairs(raceFinish) do
print("In place " .. i .. " is " .. finisher)
end
local groceryList = {"apples", "snacks", "coffee"}
for dontCareAboutThis, value in ipairs(groceryList) do
print(value)
end
Code language: Lua (lua)
More Examples
local scoreboard = {
playerOne = 15,
playerTwo = 20,
playerThree = 0
}
local highestScore = 0
local highestScorer = nil
for player, score in pairs(scoreboard) do
if score > highestScore then
highestScore = score
highestScorer = player
end
end
print(highestScorer .. " had the highest score!")
Code language: Lua (lua)