私がやろうとしていることは、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
私が得た出力は:
1 table: 0x9a2d8b0
2 table: 0x9a2d110
3 table: 0x9a2cb28
ネストされたテーブルを表示するには、ネストされたループを使用する必要があります。
また、 ipairs
を使用してarrayのようなテーブルを反復処理し、 pairs
recordのようなテーブルを反復処理します。
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
出力:
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
これにより、テーブルが再帰的にシリアル化されます。このコードのバリアントを使用して、テーブルからJSONを生成できます。
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
これを通してあなたのテーブルを走らせる:
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))
これを生成します:
{
[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",
},
}
データレコードに静的な定義済みフィールド名がある場合、このより単純なバージョンがうまくいく場合があります。
for i,t in ipairs(people) do
print('Record',i)
print('Name',t.name)
print('Address',t.address)
print('Phone',t.phone)
print()
end
IDEあなたはどのように作業しているのかわかりません。しかし、何らかの理由で、あなたとこのスレッドを見つけた他の誰もがVisual Studio Codeで作業しています Lua Debug拡張機能 は、作成したカスタムテーブルのすべての連想配列の値を表示するのに役立ちます。
私が本当に気に入っているのは、初期値だけでなく、後で値を変更する場合でも、この拡張機能を使用して、[デバッグコンソール]タブから調整を表示できることです。
私はあなたの正確な例を取り、人々をデバッグに単にタイプし、そして表示されたすべての値に行きます。