Tables can also store named fields.

named fields Use a string key when the field name is selected at runtime.

Keyed Lookup

key
keyed_lookup.lua
Replay: real traced execution (multi-file project)
local key = "city"
local value = ({name = "Ada", city = "London", role = "admin"})[key]

print("key=" .. key)
print("value=" .. value)
local key = "name"
local value = ({name = "Ada", city = "London", role = "admin"})[key]

print("key=" .. key)
print("value=" .. value)
local key = "role"
local value = ({name = "Ada", city = "London", role = "admin"})[key]

print("key=" .. key)
print("value=" .. value)
  1. key ← city, value ← London

    1local key→ city = "city" --@key="name", "role"2local value→ London = ({name = "Ada", city = "London", role = "admin"})[key]London34print("key=" .. keycity)5print("value=" .. valueLondon)
    outputkey=city
    value=London
  1. key ← name, value ← Ada

    1local key→ name = "name"2local value→ Ada = ({name = "Ada", city = "London", role = "admin"})[key]Ada34print("key=" .. keyname)5print("value=" .. valueAda)
    outputkey=name
    value=Ada
  1. key ← role, value ← admin

    1local key→ role = "role"2local value→ admin = ({name = "Ada", city = "London", role = "admin"})[key]admin34print("key=" .. keyrole)5print("value=" .. valueadmin)
    outputkey=role
    value=admin

Pick by Key

  1. The table stores named fields for one user.
  2. key is city.
  3. The lookup reads the value stored at that key.
  4. The printed value is London. | Key | Value | | --- | --- | | name | Ada | | city | London | | role | admin |

Exercise: keyed_lookup.lua

Read a table value by a string key and print both the key and selected value