2016-12-27 34 views
5

如何從最後迭代一個簡單的Lua表,即a sequence?的通緝行爲如何從末尾迭代Lua表?

例子:

local mytable = {'a', 'b', 'c'} 
for i, value in reversedipairs(mytable) do 
    print(i .. ": " .. value) 
end 

應該輸出

3: c 
2: b 
1: a 

如何實現此reversedipairs

+0

你的迭代比這更普遍。意思是,它可以在沒有太多限制的情況下在桌面上工作它只是在表格的[「sequence」](https://www.lua.org/manual/5.3/manual.html#3.4.7)上反向迭代。如果一個表沒有序列,那麼行爲是未定義的。 –

+0

@TomBlodget謝謝,我編輯了這個問題。我知道必須有一個正式的名字,但我沒有在任何地方找到它。 –

回答

5

謝謝你,@Piglet,有用的鏈接。

local function reversedipairsiter(t, i) 
    i = i - 1 
    if i ~= 0 then 
     return i, t[i] 
    end 
end 
function reversedipairs(t) 
    return reversedipairsiter, t, #t + 1 
end 

其實,我想出了一個簡單的方法可能是

local mytable = {'a', 'b', 'c'} 
for i = #mytable, 1, -1 do 
    value = mytable[i] 
    print(i .. ": " .. value) 
end 
+2

好好的工作自己編碼,Idk爲什麼soneone沒有寫出來並解釋它。這是一個非常簡單的任務。確保在允許您時將其標記爲正確:) – warspyking