Tables can act like arrays when they use consecutive numeric indexes.

array-like table An array-like table stores ordered values at numeric indexes starting at one.

Array Tables

first
array_tables.lua
Replay: real traced execution (multi-file project)
local first = "red"
local count = #{first, "white", "black"}
local selected = ({first, "white", "black"})[2]

print("first=" .. first)
print("selected=" .. selected)
print("count=" .. count)
local first = "blue"
local count = #{first, "white", "black"}
local selected = ({first, "white", "black"})[2]

print("first=" .. first)
print("selected=" .. selected)
print("count=" .. count)
local first = "green"
local count = #{first, "white", "black"}
local selected = ({first, "white", "black"})[2]

print("first=" .. first)
print("selected=" .. selected)
print("count=" .. count)
  1. first ← red, count ← 3, selected ← white

    1local first→ red = "red" --@first="blue", "green"2local count→ 3 = #{firstred, "white", "black"}3local selected→ white = ({first, "white", "black"})[2]white45print("first=" .. firstred)6print("selected=" .. selectedwhite)7print("count=" .. count3)
    outputfirst=red
    selected=white
    count=3
  1. first ← blue, count ← 3, selected ← white

    1local first→ blue = "blue"2local count→ 3 = #{firstblue, "white", "black"}3local selected→ white = ({first, "white", "black"})[2]white45print("first=" .. firstblue)6print("selected=" .. selectedwhite)7print("count=" .. count3)
    outputfirst=blue
    selected=white
    count=3
  1. first ← green, count ← 3, selected ← white

    1local first→ green = "green"2local count→ 3 = #{firstgreen, "white", "black"}3local selected→ white = ({first, "white", "black"})[2]white45print("first=" .. firstgreen)6print("selected=" .. selectedwhite)7print("count=" .. count3)
    outputfirst=green
    selected=white
    count=3

Follow the Table

  1. first starts as red.
  2. The table is red, white, black.
  3. Index 2 selects white.
  4. The table length is 3.
  5. The program prints first=red, selected=white, and count=3. | first | selected | count | | --- | --- | --- | | red | white | 3 | | blue | white | 3 | | green | white | 3 |

Exercise: array_tables.lua

Reproduce selected=white and count=3, then use first blue and green to predict which output changes.