2015-11-02 84 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循環結束。

相關問題