2015-11-02 57 views
-3

我在学习lua,任何人都可以解释这个小小的代码是如何工作的?Lua任何人都可以解释这是什么吗?

table = {1, 2, 3, 4, 5} 

function num(table, start) 
    table = start 

    return function() 
    i = i + 1 
    if table[i - 1] then 
     return i - 1,[table - 1] 
    else 
     return nil 
    end 
end 

for k,v in ipairs(table) do 
    print(k,v) 
end 
+0

'return i - 1,[table - 1]'是语法错误。你在哪看到这个剧本? – hjpotter92

+0

它也缺少用于'else'语句的'end' –

+0

代码看起来非常糟糕。 'num'不在任何地方使用;它的'table'参数立即被分配,使其毫无意义; '我'是一个全球性的,并没有在任何地方定义,所以'我=我+ 1'将失败;正如hjpotter和lukas指出的那样,它是不健康的。 –

回答

0

它看起来像代码被引导到自定义迭代器函数。但还没有完成,这是我最好的猜测它应该是什么样子

tab = {1, 2, 3, 4, 5} 

function num(tab, start) 
    local i = start or 1 
    return function() 
    i = i + 1 
    if tab[i - 1] then 
     return i - 1,tab[i - 1] 
    else 
     return nil 
    end 
    end 
end 

for k,v in ipairs(tab) do 
    print(k,v) 
end 

for k,v in num(tab) do 
    print(k,v) 
end 

这段代码会做的是通过选项卡第一个环和打印键值对。接下来,它使用它创建的迭代器,它在其之前输出键值对。

迭代器继续返回,直到它返回nil。然后for循环结束。

相关问题