你现在能做到什么

读完这 25 篇你能:

  • 写 Lua 5.4 标准代码 + 知道 LuaJIT 差异
  • 用 metatable 写 class、继承、运算符重载
  • 模块化代码、错误处理、协程
  • 在 5 大典型嵌入场景里上手(Roblox / Love2D / Neovim / Redis / OpenResty)
  • 把 Lua 嵌入 C/C++ 当配置/脚本层

接下来去哪

方向 1:游戏开发

方向 2:高性能 Web

方向 3:编辑器 / 工具链

方向 4:嵌入式 / IoT

  • NodeMCU:ESP8266 / ESP32 上跑 Lua
  • eLua:32 位 MCU 的 Lua 移植
  • Tarantool:高性能内存数据库,Lua 写存储过程

方向 5:方言与变种

Luau

Roblox 出品,类型注解 + 严格运行时。即使不做 Roblox 也值得了解——它是"现代 Lua"的好实验场。可独立用(不依赖 Roblox):

brew install luau
luau script.luau

Fennel

(fn greet [name]
  (print (.. "Hello, " name)))

(greet "world")

Lisp 语法 → 编译成 Lua。要 Lisp 表达力 + Lua 生态时考虑。fennel-lang.org

Teal

local function add(a: integer, b: integer): integer
    return a + b
end

给 Lua 加静态类型检查的纯类型层。github.com/teal-language/tl

MoonScript / YueScript

CoffeeScript 风格 → Lua。语法更紧凑但更小众。

方向 6:经典书 + 资源

  • 《Programming in Lua》(PiL) by Roberto Ierusalimschy(语言作者)—— 第 4 版覆盖 Lua 5.3,第 5 版(写作中)覆盖 5.4。Lua 圣经
  • 《Lua 程序设计》 中文版(第 4 版已译)
  • Lua Reference Manuallua.org/manual/5.4——简短精炼
  • lua-users.org wiki:老但仍有很多惯用法 / 模式
  • GitHub awesome-luagithub.com/LewisJEllis/awesome-lua

实用模式回顾

读到这里,把这几个常用模式刻到脑里:

-- 模块
local M = {}
local PRIVATE = "..."
function M.foo() end
return M

-- 类
local Class = {}
Class.__index = Class
function Class.new(...) return setmetatable({...}, Class) end
function Class:method() end

-- 默认值
local x = arg or DEFAULT

-- 安全访问
local v = obj and obj.field and obj.field.sub

-- 命名参数
M.create{ name = "x", age = 30 }

-- 字符串构建
local parts = {}
for i = 1, n do parts[i] = tostring(i) end
local s = table.concat(parts, ",")

-- pcall
local ok, err = pcall(risky_function)
if not ok then handle(err) end

思维转变

从其他语言来的人最容易卡的几点:

  1. 索引从 1:忍受它
  2. table 万能:不要找 list/dict/set——都用 table
  3. 默认全局:永远 local
  4. 0 是真值:判 false 用 == falsenot
  5. 没 class / try-catch:用 metatable + pcall

接受这些"特立独行"后,Lua 反而显出极简的美——核心几乎能在一页纸讲完,剩下都是 table 和 metatable 的组合。


🎉 Lua 系列完结。要扩展某一篇 / 加新主题,欢迎反馈。