local function iter(a, i) print("** iter >>> " .. i) i = i + 1 local v = a[i] if v then return i, v end end function test(a) return iter, a, 0 end local tab = {4, 5, 6} for i,v in test(tab) do print("## for >>> " .. i .. " = " .. v) print("\n") end
return iter, a, 0
试过改成:
return iter(a, 0)但是报错。
贴出的正常代码输出如下:
** iter >>> 0 ## for >>> 1 = 4 ** iter >>> 1 ## for >>> 2 = 5 ** iter >>> 2 ## for >>> 3 = 6 ** iter >>> 3 [Finished in 0.4s]求解答。
这个是lua的语法设计,文档: http://www.lua.org/manual/5.3/manual.html#3.3.5
--Aforstatementlikeforvar_1,···,var_ninexplistdoblockend--isequivalenttothecode:dolocalf,s,var=explistwhiletruedolocalvar_1,···,var_n=f(s,var)ifvar_1==nilthenbreakendvar=var_1blockendend版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。