Nested tables represent values inside larger values.

nested fields Chain field access when one table contains another table.

Nested Lookup

field
nested_lookup.lua
Replay: real traced execution (multi-file project)
local field = "name"
local value = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]

print("field=" .. field)
print("value=" .. value)
local field = "level"
local value = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]

print("field=" .. field)
print("value=" .. value)
local field = "city"
local value = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]

print("field=" .. field)
print("value=" .. value)
  1. field ← name, value ← Ada

    1local field→ name = "name" --@field="level", "city"2local value→ Ada = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]Ada34print("field=" .. fieldname)5print("value=" .. valueAda)
    outputfield=name
    value=Ada
  1. field ← level, value ← 3

    1local field→ level = "level"2local value→ 3 = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]334print("field=" .. fieldlevel)5print("value=" .. value3)
    outputfield=level
    value=3
  1. field ← city, value ← London

    1local field→ city = "city"2local value→ London = ({user = {name = "Ada", level = "3", city = "London"}}).user[field]London34print("field=" .. fieldcity)5print("value=" .. valueLondon)
    outputfield=city
    value=London

Step Into the User

  1. The outer table has a user field.
  2. user points to another table.
  3. field is name.
  4. .user[field] reads Ada from the inner table.
outer table -> user table -> name -> Ada

Exercise: nested_lookup.lua

Read one field from a nested user table and print the field name and value