Tables as Data Structures
Nested Lookup
Nested tables represent values inside larger values.
nested fields
Chain field access when one table contains another table.
Nested Lookup
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)
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
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
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
- The outer table has a
userfield. userpoints to another table.fieldisname..user[field]readsAdafrom 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