Lua - 切片数组
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