如何通过用作字典的Lua表中的数据“页面”?

时间:2012-05-19 11:22:08

标签: lua corona

我如何编写一个函数来迭代一个“页面”值的数据?示例代码将是理想的...

所以说我们图像的页面大小是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页时,你如何确定订单是否相同?

1 个答案:

答案 0 :(得分: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。如果您提供nil作为第二个参数,它将返回表中的第一个键和值。它也记录在in Corona,虽然看起来是相同的。