|
课程入口
Lua 课程整理:table 函数与堆栈概念
一、table 函数详解
1. table.concat (拼接函数)
- 作用:将 table 中的元素拼接成字符串
- 语法:
table.concat(list [, sep [, i [, j]]])
- 参数:
- list: 要拼接的 table
- sep: 分隔符(可选)
- i: 开始索引(可选)
- j: 结束索引(可选)
- 示例:
local t = {"你", "好", "世界"}
print(table.concat(t)) -- 输出:"你好世界"
print(table.concat(t, ",")) -- 输出:"你,好,世界"
2. table.insert (插入函数)
- 作用:向 table 中插入元素
- 语法:
table.insert(list, [pos,] value)
- 参数:
- list: 目标 table
- pos: 插入位置(可选,默认末尾)
- value: 要插入的值
- 示例:
local t = {1, 2, 3}
table.insert(t, 4) -- 在末尾插入4
table.insert(t, 1, 0) -- 在开头插入0
3. table.remove (移除函数)
- 作用:从 table 中移除元素
- 语法:
table.remove(list [, pos])
- 参数:
- list: 目标 table
- pos: 移除位置(可选,默认末尾)
- 返回值:被移除的元素
- 示例:
local t = {1, 2, 3, 4}
local v = table.remove(t, 2) -- 移除第二个元素2
4. table.move (移动函数)
- 作用:将元素从一个 table 移动到另一个 table
- 语法:
table.move(a1, f, e, t, a2)
- 参数:
- a1: 源 table
- f: 开始索引
- e: 结束索引
- t: 目标位置
- a2: 目标 table(可选,默认a1)
- 示例:
local t1 = {1, 2, 3, 4}
local t2 = {}
table.move(t1, 2, 3, 1, t2) -- 将t1的2-3元素移动到t2的开头
5. table.pack (打包函数)
6. table.sort (排序函数)
- 作用:对 table 进行排序
- 语法:
table.sort(list [, comp])
- 参数:
- list: 要排序的 table
- comp: 自定义比较函数(可选)
- 示例:
local t = {3, 1, 4, 2}
table.sort(t) -- 升序排序
table.sort(t, function(a, b) return a > b end) -- 降序排序
7. table.unpack (解包函数)
- 作用:将 table 解包为多个返回值
- 语法:
table.unpack(list [, i [, j]])
- 示例:
local t = {1, 2, 3}
local a, b, c = table.unpack(t)
二、堆栈概念
1. 栈 (Stack)
2. 堆 (Heap)
3. 堆栈应用实例
-- 实现简单的栈结构
local stack = {}
function stack.push(self, v)
table.insert(self, v)
end
function stack.pop(self)
return table.remove(self)
end
-- 使用示例
stack:push(1)
stack:push(2)
print(stack:pop()) -- 输出:2
三、课后练习建议
- 实现一个 table 合并函数,将两个 table 合并为一个
- 使用 table.sort 实现自定义复杂排序(如按字符串长度排序)
- 模拟栈结构实现一个简单的撤销(undo)功能
- 比较 table.concat 和手动拼接字符串的性能差异
注意:在实际开发中,理解这些 table 函数和堆栈概念对于编写高效、可维护的 Lua 代码非常重要。
|
|