函数
函数(Function)是 Lua 中的 一等公民(First-class value),
可以赋值给变量、作为参数传递或作为返回值返回。
这让 Lua 拥有极高的灵活性与函数式编程能力。
🧩 定义与调用函数
-- 定义函数
function greet(name)
print("你好," .. name .. "!")
end
-- 调用函数
greet("Lua")
`
Lua 中函数定义使用关键字
function,以end结束。
🧮 返回值
函数可以返回一个或多个值。
function add(a, b)
return a + b
end
function divmod(a, b)
return math.floor(a / b), a % b
end
print(add(3, 5)) -- 输出 8
local q, r = divmod(10, 3) -- 多返回值
print(q, r) -- 输出 3 1
🧰 局部函数与全局函数
function globalFunc()
print("这是全局函数")
end
local function localFunc()
print("这是局部函数")
end
建议使用
local定义函数,避免污染全局作用域。
🧑🤝🧑 函数作为变量
函数可以赋值、存入表中、或作为参数传递:
local function sayHello()
print("Hello Lua")
end
local f = sayHello
f() -- 调用变量函数
🔁 匿名函数与回调函数
Lua 支持匿名函数,可作为回调函数使用。
function operate(a, b, func)
return func(a, b)
end
print(operate(5, 3, function(x, y)
return x * y
end))
🔄 可变参数函数
使用 ... 表示可变参数。
function sum(...)
local total = 0
for _, v in ipairs({...}) do
total = total + v
end
return total
end
print(sum(1, 2, 3, 4)) -- 输出 10
🧠 递归函数
Lua 支持递归函数定义。
function factorial(n)
if n == 0 then
return 1
else
return n * factorial(n - 1)
end
end
print(factorial(5)) -- 输出 120
🧠 小结
- 使用
function ... end定义函数 - 支持多返回值与可变参数
- 函数是 一等公民,可赋值、传递与返回
- 推荐使用
local定义函数,避免全局污染
相关内容
- Lua 高级技巧与优化 学习 Lua 的高级编程技巧,包括性能优化、内存管理、闭包、尾递归优化和元表高级用法。
- Lua 与 C 的交互 学习如何在 Lua 中调用 C 函数、在 C 中嵌入 Lua,实现 Lua 与 C 的混合编程。
- 流程控制 学习 Lua 中的条件判断、循环语句与控制关键字的用法,包括 if、while、for 与 repeat until。
- Lua 协程(Coroutine) 学习 Lua 协程的基本概念、创建方法、调度与应用,实现轻量级多任务和协作式并发。
- Lua 简介 了解 Lua 的起源、设计理念及应用场景,掌握 Lua 语言的核心特征与优势。
- 输入输出与文件操作 学习 Lua 的标准输入输出函数、文件读写操作以及字符串格式化与标准库使用。