2016-12-27 43 views
5

Sonundan itibaren a sequence olan basit bir Lua tablosunu nasıl yineliyorum? İstenen davranışınLua tablosunu nasıl sonlandırılır?

Örnek:

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

çıkış

3: c 
2: b 
1: a 

Nasıl burada reversedipairs uygulamak gerekir?

+0

Kişisel yineleme bundan daha geneldir için daha kolay bir yol olabilir anladım. Anlamı, o kadar çok kısıtlama olmadan masa üzerinde çalışabilir. Sadece bir tablonun ["dizisi"] (https://www.lua.org/manual/5.3/manual.html#3.4.7) üzerinden tersine döner. Tabloda bir sıra yoksa, davranış tanımsızdır. –

+0

@TomBlodget Teşekkürler, ben soruyu düzenledim. Bunun için resmi bir isim olması gerektiğini biliyordum, ama hiçbir yerde bulamadım. –

cevap

5

Yararlı bağlantı için teşekkür ederiz, @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 

Aslında

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

Bunu kendiniz kodlamak için iyi bir iş, Idk neden oğlu yazmamış ve açıklamasın. Oldukça basit bir görevdi. İzin verdiğinde bunu doğru olarak işaretlediğinizden emin olun :) – warspyking