Lua获取表的前N个元素

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

或者我必须编写一个函数并使用pairs来实现吗?

点赞
用户2858170
用户2858170

如评论中所提到的,表格默认情况下没有排序。它只是一组键值对。因此,您的请求只对序列有意义。下面是每个建议解决方案的详细描述和示例。

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))

c d e f

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

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

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

返回目标表a2

local slice = table.move(myTable, p, p+n-1, 1, {})
2019-07-25 08:06:45