Ce que j'essaie de faire est d'afficher le contenu de la table en utilisant le code suivant dans Lua.
local people = {
{
name = "Fred",
address = "16 Long Street",
phone = "123456"
},
{
name = "Wilma",
address = "16 Long Street",
phone = "123456"
},
{
name = "Barney",
address = "17 Long Street",
phone = "123457"
}
}
for k, v in pairs(people ) do
print(k, v)
end
La sortie que j'ai obtenue est:
1 table: 0x9a2d8b0
2 table: 0x9a2d110
3 table: 0x9a2cb28
Pour afficher les tables imbriquées, vous devrez utiliser des boucles imbriquées.
En outre, utilisez ipairs
pour parcourir les tableaux - semblables à des tableaux, et pairs
pour parcourir les tables de type enregistrement .
local people = {
{
name = "Fred",
address = "16 Long Street",
phone = "123456"
},
{
name = "Wilma",
address = "16 Long Street",
phone = "123456"
},
{
name = "Barney",
address = "17 Long Street",
phone = "123457"
}
}
for index, data in ipairs(people) do
print(index)
for key, value in pairs(data) do
print('\t', key, value)
end
end
Production:
1
phone 123456
name Fred
address 16 Long Street
2
phone 123456
name Wilma
address 16 Long Street
3
phone 123457
name Barney
address 17 Long Street
Cela sérialise récursivement une table. Une variante de ce code peut être utilisée pour générer du JSON à partir d'une table.
function tprint (tbl, indent)
if not indent then indent = 0 end
local toprint = string.rep(" ", indent) .. "{\r\n"
indent = indent + 2
for k, v in pairs(tbl) do
toprint = toprint .. string.rep(" ", indent)
if (type(k) == "number") then
toprint = toprint .. "[" .. k .. "] = "
elseif (type(k) == "string") then
toprint = toprint .. k .. "= "
end
if (type(v) == "number") then
toprint = toprint .. v .. ",\r\n"
elseif (type(v) == "string") then
toprint = toprint .. "\"" .. v .. "\",\r\n"
elseif (type(v) == "table") then
toprint = toprint .. tprint(v, indent + 2) .. ",\r\n"
else
toprint = toprint .. "\"" .. tostring(v) .. "\",\r\n"
end
end
toprint = toprint .. string.rep(" ", indent-2) .. "}"
return toprint
end
exécuter votre table à travers ceci:
local people = {
{
name = "Fred",
address = "16 Long Street",
phone = "123456"
},
{
name = "Wilma",
address = "16 Long Street",
phone = "123456"
},
{
name = "Barney",
address = "17 Long Street",
phone = "123457"
}
}
print (tprint(people))
génère ceci:
{
[1] = {
name= "Fred",
phone= "123456",
address= "16 Long Street",
},
[2] = {
name= "Wilma",
phone= "123456",
address= "16 Long Street",
},
[3] = {
name= "Barney",
phone= "123457",
address= "17 Long Street",
},
}
Si vous avez des noms de champs prédéfinis statiques dans vos enregistrements de données, cette version plus simple peut fonctionner pour vous:
for i,t in ipairs(people) do
print('Record',i)
print('Name',t.name)
print('Address',t.address)
print('Phone',t.phone)
print()
end
Je ne sais pas de quoi IDE vous travaillez. Mais pour une raison quelconque, vous et toute autre personne qui trouve ce fil, travaillez dans Visual Studio Code, le Lua Debug extension fera un excellent travail en affichant toutes vos valeurs de tableau associatif pour les tables personnalisées que vous créez.
Ce que j'aime vraiment, c'est que vous pouvez afficher non seulement vos valeurs initiales, mais si vous décidez de modifier une valeur plus tard, vous pouvez le faire avec cette extension et voir vos ajustements, tout au long de l'onglet "Debug Console".
J'ai pris votre exemple exact, et j'ai simplement tapé des personnes dans le débogage, et aller toutes les valeurs affichées.