位置:首页 > Lua > Lua 入门第一课:基本语法、变量类型与字符串处理

Lua 入门第一课:基本语法、变量类型与字符串处理

时间:2026-08-24  |  作者:多维游侠  |  阅读:0

目录

  1. 先跑起来:Lua 如何进入交互模式和执行脚本
  2. 变量、作用域与 8 种类型
  3. 这些运算符在 Lua 里值得单独记一下
  4. 流程控制怎么写,为什么容易漏关键字
  5. 函数也是变量:Lua 函数的几个关键规则
  6. 字符串处理:先记住这些内置函数

前言

刚接触 Lua 时,最容易卡住的不是语法数量,而是它和常见语言差异很大的几条基础规则,比如变量默认全局、只有 nil 和 false 为假、table 既像数组又像映射。下面按上手顺序把运行方式、类型系统、流程控制、函数和字符串处理串起来,方便你边看边在交互模式里验证。

刚接触 Lua 时,最容易卡住的往往不是语法量,而是它和 C、Python、JavaScript 这些常见语言不太一样的几条基础规则:变量默认全局、只有 nil 和 false 为假、table 同时承担数组和映射的角色。下面按“先能跑、再看类型、再补字符串和流程控制”的顺序整理一遍,适合拿着交互模式边试边记,也方便后面继续学函数、协程和模块时快速回看。

先跑起来:Lua 如何进入交互模式和执行脚本

Lua 官方入门页面:www.lua.org/start.html

安装完成后,可以用下面几种方式开始:

  • lua:直接进入 Lua 环境
  • lua -i:进入交互式编程模式
  • lua :执行指定脚本文件

如果是第一次接触,优先建议用交互模式。它会保留你刚刚定义过的变量,适合一边输入一边验证语法和函数行为。

变量、作用域与 8 种类型

Lua 是动态类型语言,变量本身没有固定类型。另一个很关键的点是:变量默认是全局的,如果只想在当前作用域使用,需要显式写上 local。

Lua 变量与类型关系图,突出默认全局、local、8 种类型以及 table 的双重角色
Lua 变量与类型速览把初学 Lua 最容易混淆的类型规则放在一张图里,更容易记住默认全局、真假判断和 table。

Lua 一共有 8 种类型:

  • nil
  • boolean
  • number
  • string
  • function
  • userdata
  • thread
  • table

可以使用 type() 查看变量类型,返回值本身是一个 string,内容就是上面 8 种类型之一。

最容易混淆的三类:nil、boolean、number

nil 表示没有任何值,也就是“空”。所有变量在未赋值之前,其值都是 nil;把 nil 赋给一个变量,也等同于删除该变量。

nil 既可以参与比较,例如 nil==nil = true,也可以直接作为条件判断,此时它等价于 false。

boolean 只有 true 和 false 两个值。Lua 的真假规则非常重要:只有 nil 和 false 为假,其他都为真,包括数字 0。

number 用于表示所有数字,约等于 double。

string 和 table 的基础认知

string 可以用双引号或单引号表示,写法上和 Python 类似;也可以用 [[]] 包起来,这样能在不转义的情况下保留内部格式,有点类似 Kotlin 的三引号字符串。

Lua 里的 string 还能直接参与数学运算,但前提是内容可以成功转换成 number,否则会报错。

table 是 Lua 里唯一的集合类型,通过 {} 创建。它既能当 Array 用,也能当 Map 用,而且后续还能扩展出更灵活的用法,比如模拟继承、多态等面向对象能力。

当 table 不指定 key 时,可以把它理解为数组,但它的自动索引从 1 开始;指定 key 时,则更像 Map。

访问 table 元素可以用 [],把某个 index 或 key 对应的 value 赋值为 nil,就表示删除这个元素。

这些运算符在 Lua 里值得单独记一下

Lua 大部分运算符都比较直观,但下面几个最好单独记住:

运算符功能
~=不等于
#取 string 或 table 的长度
and逻辑与
or逻辑或
not逻辑非

其中 # 是 Lua 里很常见的写法,字符串长度和表长度都会频繁用到。

流程控制怎么写,为什么容易漏关键字

Lua 的流程控制并不复杂,但它不用花括号划定作用域,所以初学时最容易漏掉 then、do 和 end。

分支

  • if - then - else - end

循环

  • while - do - end
  • repeat - until
  • for i=exp1,exp2,exp3 - do - end
  • for k,v in pairs(table) - do - end

pairs 是一个内置函数,可以为 table 提供一个迭代器。

如果你写循环时总觉得“少了个括号”,大概率就是还没适应 Lua 这种以关键字结束代码块的风格。

函数也是变量:Lua 函数的几个关键规则

在 Lua 里,function 本身也是变量,所以同样遵循“默认全局、加 local 变局部”的规则。

函数的作用范围从关键字 function 开始,到 end 结束,同样不依赖花括号。

Lua 的函数在参数和返回值上都比较灵活:

  • 可以接收任意数量参数
  • 可以返回任意数量的值
  • 参数列表在定义时给出
  • 返回值不需要在定义里提前声明
  • 参数列表可以用 ... 表示可变长度

这也是 Lua 后面写工具函数、封装接口时非常顺手的一点。

字符串处理:先记住这些内置函数

前面已经提到过字符串的声明、拼接和长度获取,但真正写脚本时,更常用的是标准库里这批内置函数。

Lua 字符串处理函数分组图,按转换、查找替换、格式化和编码长度分类展示
Lua 字符串函数怎么记把零散的字符串函数按用途重组,比直接背函数表更容易形成使用场景。
函数名功能
string.upper(arg)变大写字母
string.lower(arg)变小写字母
string.gsub(inputStr, findStr, replaceStr, [replaceCount])找到并替换(指定次数)
string.find(inputStr, findStr, [init, [end]])查找并返回位置,两个返回值分别是 start 和 end
string.reverse(arg)反转字符串
string.format(...)格式化输出(类似 printf)
string.char(args)ASCII 数字转字符串
string.byte(inputStr, [index])指定字符转 ASCII
string.len(arg)计算字符串长度
string.rep(arg)重复字符串

如果你刚开始学,最值得先记住的是四类:大小写转换、查找替换、格式化输出、长度与重复。它们已经能覆盖很多简单脚本场景。

原文里也提到,交互式编程模式很适合随手试这些函数。这个建议是对的,尤其像 string.find() 和 string.gsub() 这类“输入一变,结果就变”的函数,现场试一遍会比只背函数名更有效。

调试与输出:先会注释和 print 就够用

Lua 的单行注释使用 -- 标识,多行注释则结合 -- 和保留字符串格式的 [[]] 来写。

输出日志时,Lua 使用 print 函数;如果需要更多运行时信息,可以继续了解 debug 库提供的能力。

对于入门阶段,先把注释、print 输出和交互模式用熟,已经足够排查大部分基础语法问题。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多