第 1 章 Lua 简介
第 1 章 Lua 简介
Lua 是一门可嵌入、易扩展的轻量级脚本语言。它诞生于 1993 年,由巴西里约热内卢天主教大学的研究团队设计,强调可移植性、简单性和与宿主程序的集成能力。
为什么选择 Lua
Lua 的核心运行时很小,适合放入游戏引擎、网络设备、编辑器和服务端程序。宿主程序可以通过 C API 向 Lua 暴露能力,Lua 则负责描述流程、规则和配置。
它的主要优势包括:
-
轻量:解释器体积小,启动快,适合嵌入。
-
跨平台:只依赖标准 C,能运行在桌面、服务器和嵌入式设备上。
-
一致的数据模型:表既可作为数组,也可作为字典和对象。
-
可扩展:C 与 Lua 可以双向调用。
-
成熟稳定:语法变化少,长期维护成本低。
Lua 的设计特点
Lua 以小型内核和丰富扩展机制为设计核心。它没有内置的类系统,但可以通过表、函数和元表构建;没有复杂的线程模型,但提供协作式协程。
动态类型
变量本身没有固定类型,值才具有类型。一个变量可以在不同时间保存不同种类的值:
local value = 42
print(type(value)) -- number
value = "Lua"
print(type(value)) -- string
整数与浮点数
Lua 5.4 区分整数和浮点数。整数使用 64 位表示,浮点数默认是双精度:
local count = 10
local ratio = 2.5
print(math.type(count)) -- integer
print(math.type(ratio)) -- float
print(10 / 2) -- 5.0
print(10 // 2) -- 5
自动内存管理
Lua 使用垃圾回收器管理内存。开发者通常不需要手动释放对象,但应避免无意义地保留引用,尤其是长生命周期的表。
第一个 Lua 程序
创建文件 hello.lua:
local name = "Lua"
print("Hello, " .. name)
在终端运行:
lua hello.lua
输出:
Hello, Lua
也可以直接使用交互环境:
$ lua
Lua 5.4.7 Copyright (C) 1994-2024 Lua.org, PUC-Rio
> print("Hello, Lua")
Hello, Lua
> os.exit()
学习路线与约定
教程按四个阶段组织:
-
第 1 至 6 章:运行环境、基本类型、运算符、控制流和函数。
-
第 7 至 12 章:表、迭代器、字符串、模块、元表和面向对象写法。
-
第 13 至 17 章:协程、错误处理、文件、标准库与 C API。
-
第 18 至 20 章:完整项目、测试调试和工程实践。
示例统一使用 Lua 5.4。若示例强调行为差异,会明确标注版本。
学习 Lua 的关键不是背语法,而是理解“值、函数、表”之间的关系。大多数高级模式都可以还原为这三者的组合。