当前位置: 代码迷 >> 其他开发语言 >> 一段LUA的语言,有点理解不同,希望高手解答一上
  详细解决方案

一段LUA的语言,有点理解不同,希望高手解答一上

热度:8981   发布时间:2013-02-26 00:00:00.0
一段LUA的语言,有点理解不同,希望高手解答一下。
function list_iter(t)
local i=0
local n=table.getn(t)
return function()
i=i+1
if i<=n then return t[i] end
end
end


t={10,20,30}

iter = list_iter(t)

print (iter)   

list_iter 是一个函数。
函数会返回一个值,iter=list_iter(t)
我理解会如此执行:
i=0;
n=3;
i=i+1=1;
return t[1]=10

iter=10

所以输出应该是为 10.
但实际情况不是如此。

------解决方案--------------------------------------------------------
你的理解是对的,输出如下:
print(iter())    -- => 10
print(iter())    -- => 20
print(iter())    -- => 30
------解决方案--------------------------------------------------------
ps:getn在高版本的Lua中被删掉了,用metamethod #来代替!
  相关解决方案