|
课程入口
Lua 函数课程内容整理
1. 函数基础
- 函数定义:
function 函数名(参数) ... end
- 调用函数:函数必须被调用才会执行。
- 返回值:使用
return 返回结果,未指定返回值则默认返回 nil 。
2. 函数类型
-
基础函数
-
带参数的函数
-
匿名函数
-
闭包函数
-
递归函数
-
可变参数函数
- 使用
... 接收不定数量的参数,通过 table.pack(...) 或迭代处理。
- 示例:
function sum(...)
local args = {...}
local total = 0
for _, v in ipairs(args) do total = total + v end
return total
end
print(sum(1, 2, 3)) -- 输出 6
-
多返回值函数
- 用多个变量接收返回值,未接收的返回值会被丢弃。
- 示例:
function multiReturn() return 1, 2, 3 end
local a, b = multiReturn() -- a=1, b=2(3被丢弃)
3. 堆栈与内存管理
-
栈(Stack)
- 存储局部变量、函数调用帧(临时数据),速度快,生命周期短。
- 特点:后进先出(LIFO)。
-
堆(Heap)
- 存储动态分配的数据(如
table 、函数对象),生命周期由引用决定。
-
压栈(Push)
- 函数调用时,参数和返回地址压入栈;局部变量占用栈空间。
-
爆栈(Stack Overflow)
4. 关键术语注解
关键词 |
解释 |
抽象 |
隐藏细节,通过函数封装逻辑。 |
迭代 |
重复调用自身(递归)或遍历数据(如 for 循环)。 |
闭包 |
函数捕获外部变量,形成独立作用域。 |
压栈/爆栈 |
函数调用时的内存分配机制;栈空间耗尽导致崩溃。 |
虚拟机 |
执行 Lua 代码的引擎(如 LuaJIT)。 |
指针 |
Lua 隐式通过引用来管理 table 和函数,无显式指针语法。 |
尾部优化 |
递归函数若最后一步是调用自身,可优化为循环,避免爆栈。 |
5. 总结
- 函数是 Lua 的核心,用于逻辑封装和代码复用。
- 理解堆栈有助于优化内存使用,避免爆栈错误。
- 闭包、递归等高级特性需结合实践逐步掌握。
|
|