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

role
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)
  1. 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
  1. 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
  1. 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