1.1 什么是 Lua
Lua 是一种轻量、小巧、可扩展的脚本语言,由巴西里约热内卢天主教大学(PUC-Rio)的 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 于 1993 年开发。名字 “Lua” 在葡萄牙语中意为 “月亮”。
Lua 的设计哲学可以概括为三个词:轻量、可嵌入、高效。它不是一个用来编写独立大型应用的”大语言”,而是一个胶水语言——被嵌入到其他宿主程序中,为宿主提供灵活的脚本能力。
Lua 的核心特性
- 简洁优雅:语法简单,语义清晰,仅有约 20 个关键字
- 动态类型:变量无类型声明,运行时确定类型
- 自动内存管理:基于标记-清除(Mark-and-Sweep)的垃圾回收
- 一等函数:函数是第一类值,可赋值给变量、作为参数传递、作为返回值
- 表(Table):Lua 唯一的数据结构容器,同时也是数组、字典、模块、类等的统一实现
- 协程(Coroutine):轻量级并发支持
- 可嵌入性:C API 完善,可轻松集成到 C/C++ 程序中
Lua 的应用场景
| 领域 | 代表案例 |
|---|---|
| 游戏开发 | Unity(XLua/ToLua)、World of Warcraft(插件)、Roblox、Corona SDK |
| 嵌入式系统 | 路由器固件、物联网设备脚本 |
| Web 服务 | OpenResty(Nginx + Lua)、Redis 脚本(EVAL) |
| 配置文件 | Nginx、Wireshark、VLC、I3 窗口管理器 |
| 工具链 | Neovim 插件(VimScript 替代者)、Awesome WM |
1.2 Lua 与其他语言的简单对比
| 维度 | Lua | Python | JavaScript | C# |
|---|---|---|---|---|
| 体积 | ~200KB | ~30MB | ~5MB | ~100MB+ |
| 关键字数量 | 21 | 35 | 63+ | 80+ |
| 主要用途 | 嵌入式脚本 | 通用编程 | Web 前端 | 企业级应用 |
| 运行方式 | 解释执行 | 解释执行 | 解释/JIT | 编译+JIT |
| 语法复杂度 | ★☆☆☆☆ | ★★☆☆☆ | ★★★☆☆ | ★★★☆☆ |
Lua 的优势在于极致的小巧和嵌入性,如果你的应用需要一个脚本引擎来扩展功能,Lua 是最佳选择之一。
1.3 环境搭建
Windows 环境
方法一:使用 LuaDist(推荐)
- 访问 LuaDist 下载预编译包
- 解压后配置环境变量(将 lua.exe 所在目录添加到 PATH)
- 打开命令行输入
lua -v验证安装
方法二:使用 Winget
1 | winget install Lua.Lua |
方法三:使用 Lua for Windows
下载 Lua for Windows 安装包,一键安装。
macOS 环境
1 | brew install lua |
Linux 环境
1 | # Ubuntu/Debian |
在线运行环境(无需安装)
建议初学者先使用在线环境熟悉语法,再安装本地环境进行深入练习。
1.4 运行第一个 Lua 程序
交互式模式(REPL)
打开终端输入 lua,进入交互式模式:
1 | Lua 5.4.6 Copyright (C) 1994-2023 Lua.org, PUC-Rio |
按 Ctrl+D 或 Ctrl+C 或输入 os.exit() 退出交互模式。
脚本模式
创建一个文本文件 hello.lua:
1 | -- hello.lua |
在终端执行:
1 | lua hello.lua |
输出:
1 | Hello, Lua! |
传递命令行参数
1 | -- args.lua |
执行:
1 | lua args.lua hello world |
输出:
1 | 脚本名称: args.lua |
1.5 推荐开发工具
VS Code + Lua 插件
- 安装 VS Code
- 安装插件:
- Lua(sumneko,又名 EmmyLua)——代码补全、语法检查、类型提示
- Lua Debug(actboy168)——调试支持
- 创建一个
.lua文件,开始编码
配置 settings.json:
1 | { |
ZeroBrane Studio
专门为 Lua 开发的轻量级 IDE,内置调试器,支持 LuaJIT,适合游戏脚本调试。
IntelliJ IDEA + EmmyLua
如果你使用 JetBrains 系的 IDE,安装 EmmyLua 插件可提供强大的 Lua 支持。
1.6 本章小结
- Lua 是一种轻量、高效、可嵌入的脚本语言
- 擅长作为胶水语言扩展宿主程序功能
- 安装方式简单,一行命令即可
- 交互式模式适合快速验证语法
- 脚本模式用于编写完整程序
练习题
- 安装 Lua 环境,打印
Hello, Lua! - 在交互模式下计算
((1 + 2) * 3 - 4) / 5的结果 - 编写一个脚本,接收两个数字作为命令行参数,打印它们的和
- 使用
os.date()格式化输出当前时间,格式为2026年06月01日