gpt4 book ai didi

lua - 返回或不返回

转载 作者:行者123 更新时间:2023-12-05 00:04:10 26 4
gpt4 key购买 nike

我正在学习 Lua 协程。我发现了一个奇怪的东西,两个


meta = function ()
for i = 1, 10 do
coroutine.yield(i)
end
end

for i in coroutine.wrap(function() return meta() end) do
print(i)
end




meta = function ()
for i = 1, 10 do
coroutine.yield(i)
end
end

for i in coroutine.wrap(function() meta() end) do
print(i)
end

(注意第一个版本有返回)给我

~/test% lua t.lua
1
2
3
4
5
6
7
8
9
10

那么, return的作用是什么? ?我想 meta()将返回一个值,匿名函数也应该返回它。那么为什么匿名函数没有 return也对吗?

最佳答案

不,meta不返回任何东西 - 至少没有什么重要的。

输出传递给 i外循环的变量来自 yield方法,而不是从返回。

如果您像这样编写循环,您可以看到这一点:

for i in coroutine.wrap(function()
val = {meta()}
print ("----")
print (val)
end) do
print(i)
end

输出是
1
2
3
4
5
6
7
8
9
10
----
nil

匿名函数,以及 meta , 只调用一次。

关于lua - 返回或不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034820/

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