util.table.clone

Shared

Retrieves a cloned copy of a table


Syntax

local result = util.table.clone(
    input,
    recursive = false
)

Parameters

TypeNameDescription
tableinputTable to clone
boolrecursiveDetermines cloning behavior:
• When true - the function recursively clones nested tables (deep copy)
• When false - the function only performs shallow copy (nested tables remain referenced)

Returns

TypeNameDescription
table | boolresultCloned copy of the table on successful execution, false otherwise

Examples

Shallow clone a table
local original = {1, 2, 3, 4}
local copy = util.table.clone(original)
copy[1] = 99

core.engine.print("info", original[1]) -- 1 (unchanged)
core.engine.print("info", copy[1]) -- 99
Shallow clone shares nested table references
local original = {a = 1, nested = {b = 2}}
local copy = util.table.clone(original)
copy.nested.b = 99

core.engine.print("info", original.nested.b) -- 99 (changed! shallow copy)
Deep clone breaks nested references
local original = {a = 1, nested = {b = 2}}
local copy = util.table.clone(original, true)
copy.nested.b = 99

core.engine.print("info", original.nested.b) -- 2 (unchanged)
core.engine.print("info", copy.nested.b) -- 99
Clone an array and modify independently
local colors = {"red", "green", "blue"}
local copy = util.table.clone(colors)
util.table.insert(copy, "yellow")

core.engine.print("info", #colors) -- 3
core.engine.print("info", #copy) -- 4
Shallow clone preserves shared references
local shared = {x = 10}
local t1 = {data = shared}
local t2 = util.table.clone(t1)
t2.data.x = 20

core.engine.print("info", t1.data.x) -- 20 (both reference same table)
Deep clone creates fully independent copies
local shared = {x = 10}
local t1 = {data = shared}
local t2 = util.table.clone(t1, true)
t2.data.x = 20

core.engine.print("info", t1.data.x) -- 10 (independent copies)
Use a clone as a reusable template
local template = {name = "", age = 0, active = true}
local user1 = util.table.clone(template)
local user2 = util.table.clone(template)
user1.name = "Alice"
user2.name = "Bob"

core.engine.print("info", user1.name, user2.name) -- 'Alice'  'Bob'

On this page