Lua 从基础入门到精通(非常详细)

6984 / 2026-01-01 00:07:28 世界杯主题歌

目录

什么是 Lua?

Lua 环境安装

Lua基本语法

注释

数据类型

nil(空)

Boolean

number(数字)

string(字符串)

function(函数)

userdata

thread

table(表)

流程控制

运算符

循环

详解string库

Lua 模块与包

案例实战

什么是 Lua?

Lua 是一种轻量小巧的脚本语言,它用标准C语言编写并以源代码形式开放。这意味着什么呢?这意味着Lua虚拟机可以很方便的嵌入别的程序里,从而为应用程序提供灵活的扩展和定制功能。而整个Lua虚拟机编译后仅仅一百余K,经过适当的裁剪还能做到更小,十分适合嵌入式的开发。

Lua 官网:The Programming Language Lua

Lua 5.3 参考手册:Lua 5.3 参考手册 - 目录

Lua 在线调试工具:LuatOS 在线模拟 - lua在线测试

Lua 环境安装

可以不安装 Lua环境, 直接用在线调试就可以, 但也有一些学习需要安装,有需要的可以安装.

Linux 系统上安装

下载源码安装:

curl -L -R -O https://www.lua.org/ftp/lua-5.3.6.tar.gz

tar zxf lua-5.3.6.tar.gz

cd lua-5.3.6

make all test

make install

Window 系统上安装 Lua

window 下你可以使用一个叫 "SciTE" 的 IDE环 境来执行 lua 程序,下载地址为:

Github 下载地址:https://github.com/rjpcomputing/luaforwindows/releases

Google Code下载地址 : https://code.google.com/p/luaforwindows/downloads/list

双击安装后即可在该环境下编写 Lua 程序并运行。

或者

访问Lua Binaries Download 下载

把红圈内的东西,下载后解压到c:\lua(里面有dll文件重复了,取可执行文件包内的就行了)

c:\lua目录情况如下

直接运行lua53.exe 就可以

Lua基本语法

以下大部分的 Lua 语句都在Lua在线调试工具上执行。

注释

单行注释

单行注释以两个连字符 -- 开头,后面跟随的内容将被解释器忽略。

--

单行注释通常用于对代码的简短解释或标记。

多行注释

多行注释以 --[[ 开始,并以 ]] 结束,适用于需要对大段代码进行说明的情况。

--[[

多行注释

多行注释

--]]

Lua 不支持嵌套注释,这意味着在一个多行注释内不能再嵌套另一个多行注释。

数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

类型

描述

nil

这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。

boolean

包含两个值:false和true。

number

表示双精度类型的实浮点数

string

字符串由一对双引号或单引号来表示

function

由 C 或 Lua 编写的函数

userdata

表示任意存储在变量中的C数据结构

thread

表示执行的独立线路,用于执行协同程序

table

Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。

nil(空)

Nil 是值 nil 的类型, 其主要特征就是和其它值区别开;通常用来表示一个有意义的值不存在时的状态。例如打印一个没有赋值的变量,便会输出一个 nil 值:

在lua在线测试 上执行命令

print(a)

运行结果

Boolean

Boolean 是 false 与 true 两个值的类型。 nil 和 false 都会导致条件判断为假; 而其它任何值都表示为真,数字 0 也是 true。

print(type(true))

print(type(false))

print(type(nil))

if false or nil then

print("至少有一个是 true")

else

print("false 和 nil 都为 false")

end

if 0 then

print("数字 0 是 true")

else

print("数字 0 为 false")

end

以上代码执行结果如下:

$ lua test.lua boolean boolean nil false 和 nil 都为 false 数字 0 是 true

number(数字)

Number 代表了整数和实数(浮点数),也就是double(双精度)类型。

print(type(2))

print(type(2.2))

print(type(0.2))

print(type(2e+1))

print(type(0.2e-1))

print(type(7.8263692594256e-06))

以上代码执行结果:

number

number

number

number

number

number

string(字符串)

字符串(即string),就是一串文本数据,可以存储你要的文本。

Lua 语言中字符串可以使用以下三种方式来表示:

单引号间的一串字符

双引号间的一串字符

[[和]]间的一串字符

string1 = "this is string1"

string2 = 'this is string2'

str4 = [[使用双括号时,甚至能包含换行数据

换行了

最后一行]]

print(string1)

print(string2)

print(str4)

以上代码执行结果:

this is string1 this is string2 使用双括号时,甚至能包含换行数据 换行了 最后一行

function(函数)

在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。

Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。

Lua 函数主要有两种用途:

1.完成指定的任务,这种情况下函数作为调用语句使用;

2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。

函数定义

Lua 编程语言函数定义格式如下:

optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)

function_body

return result_params_comma_separated

end

解析:

optional_function_scope: 该参数是可选的指定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local,通常不设置。

function_name: 指定函数名称。

argument1, argument2, argument3..., argumentn: 函数参数,多个参数以逗号隔开,函数也可以不带参数。

function_body: 函数体