Lua 数组怎么切片?

文章导读
Previous Quiz Next Lua 中没有直接支持数组切片。但是使用 table.unpack() 方法,我们可以通过以下语法实现相同的功能:
📋 目录
  1. 语法
  2. 示例 - 字符数组切片
  3. 示例 - 数字数组切片
  4. 示例 - 使用自定义方法切片数组
A A

Lua - 切片数组



Previous
Quiz
Next

Lua 中没有直接支持数组切片。但是使用 table.unpack() 方法,我们可以通过以下语法实现相同的功能:

语法

slicedArray = {table.unpack(array, startIndex, endIndex)}

其中

  • array− 源数组。

  • startIndex− 开始切片的数组索引。

  • endIndex− 切片结束的数组索引。

示例 - 字符数组切片

创建一个名为 main.lua 的源文件,并粘贴以下代码来切片数组。

main.lua

-- 源数组
array = {"a", "b", "c", "d", "e", "f"}
-- 使用开始/结束索引解包数组
slicedArray = {table.unpack(array, 2, 4)}

-- 遍历切片后的数组并打印值
for key, value in pairs(slicedArray) do
    print(key, value)
end

输出

1	b
2	c
3	d

示例 - 数字数组切片

更新名为 main.lua 的源文件,并粘贴以下代码来切片数组。

main.lua

-- 源数组
array = {1, 2, 3, 4, 5, 6}
-- 使用开始/结束索引解包数组
slicedArray = {table.unpack(array, 2, 4)}

-- 遍历切片后的数组并打印值
for key, value in pairs(slicedArray) do
    print(key, value)
end

输出

1	2
2	3
3	4

示例 - 使用自定义方法切片数组

我们可以创建一个自定义方法来获取切片数组。

更新名为 main.lua 的源文件,并粘贴以下代码来切片数组。

main.lua

-- 自定义函数获取切片数组
function slice(array, first, last, step)
   local slicedArray = {}

   -- 从 first 到 last 遍历循环
   -- 填充切片数组
   for i = first or 1, last or #array, step or 1 do
      slicedArray[#slicedArray+1] = array[i]
   end
   -- 返回数组
   return slicedArray
end

-- 源数组
sourceArray = {1, 2, 3, 4, 5, 6}
-- 获取切片数组
targetArray = slice(sourceArray, 2, 4)

-- 遍历切片数组并打印值
for key, value in pairs(targetArray) do
    print(key, value)
end

输出

1	2
2	3
3	4