web-dev-qa-db-ja.com

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

11
Franz Wexler

便利なリンクをありがとう、@ 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
17
Franz Wexler

また、逆のインデックスを持つ標準のforステートメントを使用することもできます。

for i=1, #mytable do
   print(mytable[#mytable + 1 - i])
end
0
Termininja