课时 5 · 函数

课时 5 · 函数(Lua 语言基础):理解函数的定义、调用与闭包。含可运行的示例代码、练习与验收要点,示例锁定 Lua 5.1,可在站内在线运行验证。

教程/第一部分 · Lua 语言基础更新于 2026-10-073 个小节 教程第 7 / 23 篇 Lua基础语法

本课的代码可以就地复制;点代码块右上角的「运行这段」, 会带着这段代码打开 Lua 在线运行器 并直接跑出结果 (课程示例统一按 5.1 跑;运行器里也能切到 5.3)。

本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。

本课目标

  • 理解函数的定义、调用与闭包。

知识讲解

函数用 function 定义,支持参数、多返回值、可变参数(...)与递归。Lua 中函数是一等值,可存入变量与表。闭包指函数捕获了其外部局部变量,即使外层函数已返回,内部函数仍可访问这些变量。

示例:函数与闭包

function swap(a, b)
    return b, a             -- 多返回值
end
local x, y = swap(1, 2)
print(x, y)                 -- 2  1

function counter()
    local c = 0
    return function()        -- 闭包
        c = c + 1
        return c
    end
end
local next = counter()
print(next(), next())        -- 1  2

练习任务

  • 编写数学工具函数库(求和、阶乘、斐波那契),分别用递归与非递归实现。

参考:工具函数

function sum(n)              -- 1+2+...+n
    local s = 0
    for i = 1, n do s = s + i end
    return s
end
function fact(n)              -- 阶乘(递归)
    if n <= 1 then return 1 end
    return n * fact(n - 1)
end
function fib(n)               -- 斐波那契
    if n <= 2 then return 1 end
    return fib(n - 1) + fib(n - 2)
end
本篇依据
  • 《996 新三端 Lua 开发教学技术手册》课时 5

参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。