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

ありがとう、@ピグレット、便利なリンクです。

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はなぜそれを書き上げて説明しなかったのですか?それはかなりシンプルな作業でした。それがあなたを許可するときにこれを正しいとマークすることを確認してください:) – warspyking

関連する問題