Lua 是轻量、可嵌入的脚本语言,常用于游戏脚本、配置扩展、嵌入式设备、Nginx/OpenResty、插件系统和业务规则脚本。
基础语法
变量默认是全局变量,建议使用 local。
1 2 3 4
| local name = "Leroi" local age = 18
print(name, age)
|
条件:
1 2 3 4 5 6 7 8 9
| local score = 90
if score >= 90 then print("A") elseif score >= 60 then print("pass") else print("fail") end
|
循环:
1 2 3
| for i = 1, 5 do print(i) end
|
table
Lua 里最重要的数据结构是 table,可以当数组、字典、对象使用。
1 2 3 4 5 6 7
| local user = { id = 1, name = "Leroi" }
print(user.id) print(user["name"])
|
数组习惯从 1 开始:
1 2 3 4 5
| local list = { "a", "b", "c" }
for i, value in ipairs(list) do print(i, value) end
|
函数和模块
1 2 3 4 5
| local function add(a, b) return a + b end
print(add(1, 2))
|
模块示例:
1 2 3 4 5 6 7
| local M = {}
function M.hello(name) return "hello " .. name end
return M
|
使用:
1 2
| local demo = require("demo") print(demo.hello("Leroi"))
|
常见使用场景
常见问题
OpenResty 小例子
1 2 3 4 5
| location /hello { content_by_lua_block { ngx.say("hello lua") } }
|
OpenResty 里要注意阻塞 IO、共享字典、worker 生命周期和 Nginx 阶段模型,不要把普通 Lua 脚本习惯直接搬进网关。
官方入口