0

1つの「ページ」に相当するデータを反復処理する関数をどのようにコーディングしますか?サンプルコードが理想的です...

つまり、1ページのサイズが5アイテムであるとイメージします。18個のアイテムを含むluaテーブルがある場合は、次のように印刷する必要があります。

  • ページ1:1から5
  • ページ2:6から10
  • ページ3:11から15
  • ページ4:16から18

したがって、データが次のようなものであると想定します。

local data = {}
data["dog"] = {1,2,3}
data["cat"] = {1,2,3}
data["mouse"] = {1,2,3}
data["pig"] = {1,2,3}
.
.
.

これと同等の機能を実行する関数をどのようにコーディングしますか?

function printPage (myTable, pageSize, pageNum)
  -- find items in "myTable" 
end

それで、実際、辞書として使用されるLuaテーブルがこれを実行できるかどうかさえわかりませんか?そのような表には特定の順序はありませんが、2ページ目の印刷に戻ったときに、順序が同じであることをどのように確認しますか?

4

1 に答える 1

2

このnext関数を使用すると、テーブルを順番に調べることができます(予測できないものですが)。例えば:

data = { dog = "Ralf", cat = "Tiddles", fish = "Joey", tortoise = "Fred" }

function printPage(t, size, start)
    local i = 0
    local nextKey, nextVal = start
    while i < size and nextKey ~= nil do
        nextKey, nextVal = next(t, nextKey)
        print(nextKey .. " = " .. nextVal)
        i = i + 1
    end
    return nextKey
end

local nextPage = printPage(data, 2)  -- Print the first page
printPage(data, 2, nextPage)         -- Print the second page

これはあなたが求めていた形ではないことは知っていますが、非常に簡単に適応できると確信しています。

このnext関数は、テーブルで提供されているキーの後に、その値とともにキーを返します。テーブルの終わりに達すると、を返しますnil。2番目のパラメーターとして指定するnilと、テーブルの最初のキーと値が返されます。同一のように見えますが、コロナでも文書化されています。

于 2012-05-19T11:49:46.353 に答える