Object Patterns with Tables
Record Fields
Use table fields as an object-style record.
record fields
An object-like table groups named fields. This example copies fields back into scalar values so replay stays stable.
Record Fields
record_fields.lua
Replay: real traced execution (multi-file project)
local role = "admin"
local name = "Ada"
local label = ({name = name, role = role}).name .. ":" .. ({name = name, role = role}).role
print("name=" .. name)
print("role=" .. role)
print("label=" .. label)
local role = "guest"
local name = "Ada"
local label = ({name = name, role = role}).name .. ":" .. ({name = name, role = role}).role
print("name=" .. name)
print("role=" .. role)
print("label=" .. label)
local role = "editor"
local name = "Ada"
local label = ({name = name, role = role}).name .. ":" .. ({name = name, role = role}).role
print("name=" .. name)
print("role=" .. role)
print("label=" .. label)
role ← admin, name ← Ada, label ← Ada:admin
1local role→ admin = "admin" --@role="guest", "editor"2local name→ Ada = "Ada"3local label→ Ada:admin = ({name = name, role = role}).nameAda .. ":" .. ({name = name, role = role}).roleadmin4print("name=" .. nameAda)5print("role=" .. roleadmin)6print("label=" .. labelAda:admin)outputname=Ada role=admin label=Ada:admin
role ← guest, name ← Ada, label ← Ada:guest
1local role→ guest = "guest"2local name→ Ada = "Ada"3local label→ Ada:guest = ({name = name, role = role}).nameAda .. ":" .. ({name = name, role = role}).roleguest4print("name=" .. nameAda)5print("role=" .. roleguest)6print("label=" .. labelAda:guest)outputname=Ada role=guest label=Ada:guest
role ← editor, name ← Ada, label ← Ada:editor
1local role→ editor = "editor"2local name→ Ada = "Ada"3local label→ Ada:editor = ({name = name, role = role}).nameAda .. ":" .. ({name = name, role = role}).roleeditor4print("name=" .. nameAda)5print("role=" .. roleeditor)6print("label=" .. labelAda:editor)outputname=Ada role=editor label=Ada:editor