首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 其他开发语言 >

一段LUA的语言,有点理解不同,希望高手解答一下。该怎么解决

2012-06-13 
一段LUA的语言,有点理解不同,希望高手解答一下。function list_iter(t)local i0local ntable.getn(t)retu

一段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 #来代替!

热点排行