gpt4 book ai didi

arrays - Lua中如何迭代表?

转载 作者:行者123 更新时间:2023-12-03 01:18:05 26 4
gpt4 key购买 nike

所以,我有一张表格,内容大致如下:

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 与 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

关于arrays - Lua中如何迭代表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17436947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com