だから、私はこれらの行に沿ってテーブルを持っています:
arr =
{
apples = { 'a', "red", 5 },
oranges = { 'o', "orange", 12 },
pears = { 'p', "green", 7 }
}
インデックスに基づいてアクセスすることはできないようで、値自体はテーブルなので、ネストしたテーブルの最初の値をインデックスにしたので、次のようになります。
arr =
{
apples = { 0, 'a', "red", 5 },
oranges = { 1, 'o', "orange", 12 },
pears = { 2, 'p', "green", 7 }
}
そのため、これらのテーブルのいずれかを使用するたびに、インデックスが何であるかはわかりますが、インデックスを使用してテーブルにアクセスできないため、すべてをループする関数の作成を開始し、正しいものを見つけます。その後、私は...インデックスでそれらを参照できない場合、どうすればそれらをループできますか?だから、今私は立ち往生しています。ほとんどの場合、arr.apples vs arr [1]を入力できるようにしたいのですが、もちろん両方を実行する必要があります。
テーブル内のすべてのキーと値のペアを反復処理するには、pairs
を使用できます。
for k, v in pairs(arr) do
print(k, v[1], v[2], v[3])
end
出力:
pears 2 p green
apples 0 a red
oranges 1 o orange
編集:Luaは、テーブルの関連部分の反復順序を保証しないことに注意してください。特定の順序でアイテムにアクセスする場合は、arr
からキーを取得して並べ替えます。次に、ソートされたキーを介してarr
にアクセスします。
local ordered_keys = {}
for k in pairs(arr) do
table.insert(ordered_keys, k)
end
table.sort(ordered_keys)
for i = 1, #ordered_keys do
local k, v = ordered_keys[i], arr[ ordered_keys[i] ]
print(k, v[1], v[2], v[3])
end
出力:
apples a red 5
oranges o orange 12
pears p green 7
複数のキーでネストされたテーブルを参照する場合は、それらを別々のキーに割り当てるだけです。テーブルは複製されず、同じ値を引き続き参照します。
arr = {}
apples = {'a', "red", 5 }
arr.apples = apples
arr[1] = apples
このコードブロックを使用すると、テーブル内のすべてのキーと値のペアを反復処理できます( http://lua-users.org/wiki/TablesTutorial ):
for k,v in pairs(t) do
print(k,v)
end