跳转到内容

Lua

维基教科书,自由的教学读本
维基百科中的相关条目:

Lua(luːə)程序设计语言是一个简洁(易于编辑)、轻量、可扩展的脚本语言。纯粹的Lua是进行一些运算并向控制台输出文本。本教程主要包括了如何使用Lua、Lua的语法,以及自带的一些功能,还有MediaWiki中使用Lua模块的方法。

使用Lua语言

[编辑]

安装使用

[编辑]

搭建环境

[编辑]

Lua安装、源代码可以在Lua官网(英文)下载。这需要使用C++语言,操作较为复杂。安装方法可以参见官方网站(英文)。可以按照Lua官网上的集成方法,如lua.exe和luac.exe。以lua.exe为例,直接打开lua.exe可以进行交互式编程;或者设置环境变量,然后在命令行窗口中输入lua进行交互式编程(按Ctrl+C可退出解释器),或者输入“lua 文件地址”运行Lua。文件地址可以从资源管理器选择文件,然后拖动到cmd窗口。

以下是Lua的命令行窗口的交互式编程模拟图:

Lua 5.3.4 Copyright (C) 1994-2017 Lua.org, PUC-Rio

> print"你好,世界!" 你好,世界!

>

直接用lua.exe打开lua文件也行,但是文件运行完成后就会立即关闭窗口(python也是如此)。因此可以使用io.read()while true do end使其不会运行结束。

使用第三方软件

[编辑]

LuaStudio软件也比较适用,但是只支持Lua 5.1,版本太旧,并且只有30天试用期。破解版可以破解试用期,但是不稳定,易崩溃。其他可用于编辑Lua的软件有Script.net、SciTE(但都只适用于较旧的版本),以及EmmyLua(基于其他的软件,安装困难,且有点吃内存)。推荐使用Subline Text

使用在线编辑运行

[编辑]

此外也可以在网站上在线输出,该网站使用的Lua通常是最新版的,需要开启JavaScript(默认是开启的),并且不需要安装任何扩展组件。

输出

[编辑]
主页面:Lua/输出

Lua程序的基本内容,就是通过计算,将值输出控制台上。这需要使用到自带函数print()[註 1]

这是一个最简单的Lua:

print"你好,世界!"

执行后,你将会在控制台上看见以下内容:

你好,世界!

有时,我们可以用类似于cmd窗口的格式运行Lua。这种称为“交互式编程”。带>号的表示输入的内容,不带>号的表示输出的内容。这种方法往往更加及时,输入一行即可执行一行。这种方法与使用Lua文件有些不同,例如可以直接在第一行加一个等号以表示输出,或者连等号都不要,直接是表达式(仅限于较新版本的Lua)。如果一行是一个函数调用,不管函数进行什么操作,只要它返回了值,就会显示返回的值。

>"你好,世界!"
你好,世界!
>a="你好,世界!"
>print(a)
你好,世界!

变量及数据类型

[编辑]
主页面:Lua/变量、及Lua/数据类型

Lua的函数需要对数据进行运算,最后输出文字。在运算过程中,我们可以给一些数据赋值(也叫创建变量)。这样,我们可以在多处重复使用一个数据,并对数据进行复杂的运算。

相关定义

[编辑]

例如,这个简单的表达式:x=5。它的意思是给变量x赋值为5,或者说是将变量x的值(由nil)修改为5。

在这里,x是标识符(也叫名称),5是它的。等于号就是给数据赋值,它属于一个操作

变量

[编辑]
主页面:Lua/变量

变量用不带引号的英文字母、数字和下划线表示,且不能以数字开头,例如上面的x

对于一个表(下面会学到),它的域也属于变量。具体请参见表段落

[编辑]

拥有数据类型。在计算中,软件就会将它的值代入变量以进行计算。例如x变量的值为5,那么x+1的值就是6(因此表达式也可以有值,这个值就是它的计算结果)。print(x+1)就会在控制台上输出文字6。

全局变量与局部变量

[编辑]
主页面:Lua/全局变量与局部变量

变量分为全局变量、局部变量和表中的域。全局变量就是在整个Lua文件中赋值,在赋值后的任何地方都起效果。需要注意的是,Lua文件像JavaScript一样,是从前往后按步骤计算。

局部变量是在某一个具有开始、结束的代码块中使用的,只在这个范围中有效,超出这个范围之后就是nil或者其他的全局或局部变量。

do
	local x=2
	print(x) -- 会输出2
end
print(x)

--会输出nil

表的用法见表段落

类型

[编辑]
主页面:Lua/类型

Lua的变量的值有以下这些类型:空、布尔、数字、字符串、用户自定义、函数、线程和表。MediaWiki中的Lua不能使用用户自定义和线程,因此本书主要介绍几种较主要的数据类型。

[编辑]
主页面:Lua/类型/空

表示这个变量不存在(未创建或者已经删除),我们用nil表示它。凡是不存在的变量都是nil。赋值(创建变量)的实质就是将变量的值由nil修改为存在的值,删除变量的实质就是将变量的值由存在的值修改为nil。如果创建一个,那么所有的没有定义的域的值都会是nil。

数字

[编辑]
主页面:Lua/类型/数字

数字是描述一个大小的值,可正可负。数字又分为两种:整数与浮点数。

布尔值

[编辑]
主页面:Lua/类型/布尔值

布尔值描述一个数据是真还是假,通常用表达式得出,可用true或false表示,并用于一些逻辑运算。需要注意,对于其他类型的值,在逻辑运算中,只有nil和false会视为假。

字符串

[编辑]
主页面:Lua/类型/字符串

字符串描述一行或多行文字。可以用"字符串内容"(半角双引号围住)、'字符串内容'(半角单引号围住)、[[字符串内容]](两层中括号)或[===[字符串内容]===](夹杂等号的中括号)表示。用引号表示的字符串可以使用"\n""\a"等转义符号。

[编辑]
主页面:Lua/类型/表

可以有规律地储存多个值。每一个表都分为一个、多个或零个字段(field),字段包括键(key)值(value)

函数

[编辑]
主页面:Lua/类型/函数、及Lua/函数

函数是Lua的另一种数据,用于调用。

  1. io.write()等函数也是可用的

相关链接

[编辑]