Comme porcelet a souligné, vous pouvez utiliser des tables temporairement, comme il a montré dans son exemple. La référence à la table à l'intérieur de la fonction sera perdue après la fonction, donc la seule façon d'accéder à newEntry
est via la table principale. Cependant, si vous avez vraiment besoin de copier (vraiment copier) la table, vous devez utiliser une fonction pour cela. Mais gardez à l'esprit que vous n'avez souvent pas à copier.
Dans this answer, une très courte méthode de copie profonde pour les tables est affichée. Cela peut être utilisé pour rendre deux tables indépendantes les unes des autres. Cela gère également d'autres choses comme les métabalises. De plus, la réponse donne quelques liens vers d'autres lectures.
Je vous suggère de faire usage de la bibliothèque penlight pour lua, une bibliothèque 'officielle' non officielle qui est très utile. Il a un riche documentation, y compris guides pour montrer ce que vous pouvez utiliser penlight pour.Dans votre cas, il fournit une fonction deepcopy, donc tout se résume à ceci:
local tablex = require "pl.tablex"
local tempTable = {}
-- more code
local mainTable = {}
-- more code
table.insert(mainTable, tablex.deepcopy(tempTable))
Enfin, un petit conseil sur la syntaxe de Lua: Une partie de lua origines dans un langage de description des données, il est donc possible pour écrire des choses très facile et agréable:
TempTable = {
date = { day, month, year },
name = "Name Here",
address = "Address Here", -- you can put a comma AFTER the last element
}
maintenant, en utilisant l'approche de la fonction, vous pouvez tout remballer très bien:
function create_entry(name, address, date)
local date = date or get_current_date() -- use date parameter or the current date if absent
return {
name = name,
address = address,
date = date
}
end
-- can be used like this:
table.insert(mainTable, create_entry("Foibudle", "12345 Dreamland", date("12-03-2015"))
-- can be used without the date:
table.insert(mainTable, create_entry("Foibudle", "12345 Dreamland")
'maintable [i] = TempTable' ne fonctionne pas? – Nasso