2015-11-02 2 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

также не хватает 'end' для' else' оператора –

+0

Код выглядит очень плохо. 'num' нигде не используется; параметр «table» к нему сразу присваивается, делая его бессмысленным; 'i' является глобальным и не определен нигде, поэтому' i = i + 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 

Что этот код будет сделать первую петлю через вкладку и распечатать пары ключ-значение. Затем он использует итератор, который он сделал, который печатает пары значений ключа перед ним.

Итератор продолжает возвращаться до тех пор, пока не вернет нуль. Затем цикл for заканчивается.