主题
函数
函数(Function)是 Lua 中的 一等公民(First-class value),
可以赋值给变量、作为参数传递或作为返回值返回。
这让 Lua 拥有极高的灵活性与函数式编程能力。
🧩 定义与调用函数
lua
-- 定义函数
function greet(name)
print("你好," .. name .. "!")
end
-- 调用函数
greet("Lua")
Lua 中函数定义使用关键字
function
,以end
结束。
🧮 返回值
函数可以返回一个或多个值。
lua
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
🧰 局部函数与全局函数
lua
function globalFunc()
print("这是全局函数")
end
local function localFunc()
print("这是局部函数")
end
建议使用
local
定义函数,避免污染全局作用域。
🧑🤝🧑 函数作为变量
函数可以赋值、存入表中、或作为参数传递:
lua
local function sayHello()
print("Hello Lua")
end
local f = sayHello
f() -- 调用变量函数
🔁 匿名函数与回调函数
Lua 支持匿名函数,可作为回调函数使用。
lua
function operate(a, b, func)
return func(a, b)
end
print(operate(5, 3, function(x, y)
return x * y
end))
🔄 可变参数函数
使用 ...
表示可变参数。
lua
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 支持递归函数定义。
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
定义函数,避免全局污染