lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


William Trenker wrote:
Sometimes I want to make a duplicate copy of a table, not just assign
another reference to it.  Is this the standard way:

a={1,2,3, m="m", "n" , o={4}, p = function() end}

b={}
table.foreach(a, function(k,v) b[k]=v end)

close, but you'll still end up with references to child tables, rather than copies. this may be ok for you, otherwise you have to recurse child tables

function clone(node)
  if type(node) ~= "table" then return node end
  local b = {}
  table.foreach(node, function(k,v) b[k]=clone(v) end)
  return b
end

a={1,2,3, m="m", "n" , o={4}, p = function() end}

b=clone(a)

(and that still will only copy references to userdata and functions)

Adrian