util.table.clone
Shared
Retrieves a cloned copy of a table
Syntax
local result = util.table.clone(
input,
recursive = false
)Parameters
| Type | Name | Description |
|---|---|---|
table | input | Table to clone |
bool | recursive | Determines 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
| Type | Name | Description |
|---|---|---|
table | bool | result | Cloned copy of the table on successful execution, false otherwise |
Examples
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]) -- 99local 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)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) -- 99local 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) -- 4local 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)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)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'