2016-12-27 1 views
5

Comment puis-je itérer une table Lua simple, qui est a sequence, à partir de la fin?Comment itérer la table Lua à partir de la fin?

Exemple de comportement recherché:

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

devrait sortie

3: c 
2: b 
1: a 

Comment mettre en œuvre ici reversedipairs?

+0

Votre itération est plus générale que cela. Ce qui signifie, il pourrait travailler sur la table sans trop de restrictions. Il itère simplement en sens inverse sur la ["séquence"] (https://www.lua.org/manual/5.3/manual.html#3.4.7) d'une table. Si une table n'a pas de séquence, le comportement n'est pas défini. –

+0

@TomBlodget Merci, j'ai édité la question. Je savais qu'il devait y avoir un nom officiel, mais je ne l'ai trouvé nulle part. –

Répondre

5

Merci, @Piglet, pour le lien utile.

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 

En fait, je me suis dit à un moyen plus facile peut-être à

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

Bon travail de codage vous-même, Idk pourquoi Soneone ne l'a pas écrit et l'expliquer cependant. C'était une tâche assez simple. Assurez-vous de marquer ceci comme correct quand il vous permet :) – warspyking