Lua 教程 - 第一章:Lua 入门基础
第一章:Lua 入门基础
欢迎开始 Lua 学习之旅!Lua 是一种轻量级、高效且可嵌入的脚本语言。它的设计目标是作为一种扩展语言,嵌入到应用程序中,为其提供脚本功能。
1.1 简介
Lua 的历史与发展
Lua 诞生于 1993 年,由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的 Roberto Ierusalimschy、Luiz Henrique de Figueiredo 和 Waldemar Celes 创建。“Lua” 在葡萄牙语中是“月亮”的意思。
Lua 的特点与应用场景
-
轻量级: Lua 的源码非常精简,编译后的二进制文件也很小,非常适合嵌入式设备。
-
高效: Lua 拥有极高的执行效率,是目前速度最快的脚本语言之一。
-
可扩展: Lua 提供了易于使用的 C API,方便与其他语言(如 C/C++)进行交互。
-
应用场景:
- 游戏开发: 魔兽世界(World of Warcraft)、愤怒的小鸟(Angry Birds)、Roblox 等都大量使用了 Lua。
- 嵌入式系统: 用于路由器、智能家居设备等的配置和控制。
- Web 开发: OpenResty 将 Lua 嵌入到 Nginx 中,用于高性能 Web 应用开发。
- 脚本扩展: Adobe Lightroom、Redis 等软件支持 Lua 脚本。
安装和配置 Lua 环境
Lua 的安装非常简单。
-
Windows: 推荐使用 Lua for Windows 或者直接下载编译好的二进制文件。
-
Linux: 大多数发行版都可以通过包管理器安装,例如
sudo apt-get install lua5.3。 -
macOS: 可以使用 Homebrew 安装:
brew install lua。
安装完成后,在终端输入 lua -v,如果能看到版本信息,说明安装成功。
第一个 Lua 程序:Hello World
创建一个名为 hello.lua 的文件,输入以下内容:
print("Hello, World!")
在终端运行:
lua hello.lua
输出:
Hello, World!
1.2 基础语法
注释
Lua 支持单行注释和多行注释。
-- 这是单行注释
--[[
这是多行注释
可以跨越多行
]]
标识符
标识符用于命名变量、函数等。
-
由字母、数字和下划线组成。
-
不能以数字开头。
-
区分大小写。
-
避免使用下划线加大写字母(如
_VERSION),因为这些通常被 Lua 保留用于特殊用途。
关键字
以下是 Lua 的保留关键字,不能用作标识符:
and break do else elseif end
false for function if in local
nil not or repeat return then
true until while
全局变量与局部变量
-
全局变量: 默认情况下,变量都是全局的,不需要声明即可直接赋值使用。访问未初始化的全局变量会返回
nil。 -
局部变量: 使用
local关键字声明。局部变量的作用域仅限于声明它的代码块。推荐尽量使用局部变量,因为访问速度更快,且避免污染全局环境。
a = 10 -- 全局变量
local b = 20 -- 局部变量
function test()
c = 30 -- 全局变量(即使在函数内赋值,若没加local也是全局)
local d = 40 -- 局部变量
end
数据类型简介
Lua 是动态类型语言,变量不需要声明类型。Lua 有 8 种基本数据类型(将在下一章详细介绍):
-
nil -
boolean -
number -
string -
userdata -
function -
thread -
table
1.3 运算符
算术运算符
+ (加), - (减), * (乘), / (除), // (整除, Lua 5.3+), % (取模), ^ (乘方)
print(10 + 2) -- 12
print(10 / 3) -- 3.3333333333333
print(10 // 3) -- 3
print(2 ^ 3) -- 8.0
关系运算符
== (等于), ~= (不等于), <, >, <=, >=
print(10 == 10) -- true
print(10 ~= 20) -- true
逻辑运算符
and, or, not
-
and: 如果第一个操作数为假,则返回第一个操作数;否则返回第二个操作数。 -
or: 如果第一个操作数为真,则返回第一个操作数;否则返回第二个操作数。 -
not: 取反。
注意: 在 Lua 中,只有 false 和 nil 为假,其他所有值(包括 0 和空字符串)都为真。
print(true and false) -- false
print(true or false) -- true
print(not false) -- true
print(10 and 20) -- 20
print(nil or "default") -- "default" (常用技巧)
其他运算符
-
..: 字符串连接 -
#: 获取长度(字符串或表)
print("Hello " .. "World") -- "Hello World"
print(#"Hello") -- 5
运算符优先级
从高到低:
-
^ -
not,#,-(一元) -
*,/,//,% -
+,- -
.. -
<,>,<=,>=,~=,== -
and -
or
练习题
-
编写一个 Lua 脚本,计算并打印
10 + 20 * 5的结果。 -
尝试定义一个局部变量和一个全局变量,并在不同作用域内访问它们,观察区别。
-
使用逻辑运算符
and和or实现一个简单的默认值逻辑(如果变量x为nil,则将其赋值为0)。
下一章预告:我们将深入探讨 Lua 的数据类型与值,包括字符串操作和强大的表(Table)结构。

