gpt4 book ai didi

lua - Lua-具有可变参数数量的迭代器

转载 作者:行者123 更新时间:2023-12-04 16:07:11 27 4
gpt4 key购买 nike

我一直在尝试了解Lua迭代器的工作方式和行为。虽然闭包对我来说很清楚,但在使用无状态迭代器时一直遇到困难。

对我来说,最简单的任务(例如重新实现一对或一对)很清楚。但是,如果我想编写一个迭代器,该迭代器接收可变数量的表并对其进行迭代,该怎么办?
例如,

for i in iter({1,2,3}, {'a', 'b', 'c'}, {100, 101}, {}) do
print(i)
end
--I would expect it to write: 1, 2, 3, a, b, c, 100, 101


我一直在尝试在互联网上找到一些有用的信息,但是我所看到的只是一次又一次地使用相同的简单示例。因此,欢迎提供任何提示和建议!

最佳答案

我认为您正在谈论的迭代器应如下所示:
编辑:用包含两个索引的单个数组替换了2个索引的用法。

function iter_variable (a, indexArr)
indexArr[2] = indexArr[2] + 1
local v = a[indexArr[1]][indexArr[2]]
if v then
return indexArr, v
else
-- end of current internal DS, move on to the next internal DS
indexArr[1] = indexArr[1] + 1
indexArr[2] = 1
local v = a[indexArr[1]][indexArr[2]]
if v then
return indexArr, v
end
end
end

function ipairs_variable (...)
local a = {...}
return iter_variable, a, {1,0}
end

for i, v in ipairs_variable({1,2,3}, {'a', 'b', 'c'}, {100, 101}, {}) do
print(v)
end

关于lua - Lua-具有可变参数数量的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49524474/

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