首页 > 解决方案 > Lua获取表的前N个元素

问题描述

有没有一种方法可以获取表的前 N ​​个元素?更一般地说,给我从位置 P 开始的前 N ​​个元素。

还是我必须编写一个函数并使用它pairs来做到这一点?

标签: lua

解决方案


如评论表中所述,默认情况下没有订单。它只是一堆键值对。所以你的请求只对序列有意义。以下是每个建议解决方案的一些细节和示例。

local myTable = {"a", "b", "c", "d", "e", "f", "g", "h"}

local p = 3
local n = 4

选项 1:https ://www.lua.org/manual/5.3/manual.html#pdf-table.unpack

table.unpack(list [, i [, j]])

返回给定列表中的元素。这个函数相当于

return list[i], list[i+1], ···, list[j]

默认情况下,i1j#list

print(table.unpack(myTable, p, p+n-1))

定义

选项 2:https ://www.lua.org/manual/5.3/manual.html#pdf-table.move

table.move (a1, f, e, t [,a2])

将元素从 table 移动a1到 table a2,执行与以下多重赋值等效的操作:a2[t],··· = a1[f],···,a1[e]. 的默认a2值为a1。目标范围可以与源范围重叠。要移动的元素数量必须适合 Lua 整数。

返回目标表a2

local slice = table.move(myTable, p, p+n-1, 1, {})

推荐阅读