gpt4 book ai didi

使用迭代器的 Lua 迭代器

转载 作者:行者123 更新时间:2023-12-05 00:45:20 24 4
gpt4 key购买 nike

我有一个定义为 C 绑定(bind)的函数,它提供了一个通用的 for迭代器:

for el in doc:each() do ... end

我想在 Lua 中编写一个迭代器,使用这个函数进行迭代,但返回每个结果的修改。我怎样才能做到这一点?

编辑 :我确信我的迭代器必须启动这样的东西,但我迷失在函数的主体中。

function myiterator()
local f, c, v = doc:each()
return (function(c2, v2)
-- ??
end), ??, ??
end

最佳答案

function myiterator()
local generator, state, prev_x = doc:each()

local function my_generator()
local x, y = generator(state, prev_x)
if x ~= nil then
prev_x = x
-- modify x, y
local modified_x = x + 100
local modified_y = "("..y..")"
-- modified_x must be non-nil
return modified_x, modified_y
end
end

return my_generator
end

之前:
local doc = {each = function() return ipairs{"aa", "bb", "cc"} end}
for x, y in doc:each() do
print(x, y)
end

输出:
1   aa
2 bb
3 cc

之后:
local doc = {each = function() return ipairs{"aa", "bb", "cc"} end}

-- insert myiterator definition here

for x, y in myiterator() do
print(x, y) -- now x and y are modified
end

输出:
101 (aa)
102 (bb)
103 (cc)

关于使用迭代器的 Lua 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57548552/

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