2016-12-27 65 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