Lua学习篇③——数据类型
虽说是动态类型,Lua也有8个基本的类型分别为:nil、boolean、number、string、userdata、function、thread和table。
数据类型 | 描述 |
nil | 一个无效值,其类型只包含nil |
boolean | true或者false |
number | 双精度类型的实浮点数 |
string | 字符串类型 |
function | 函数类型 |
userdata | 存储在变量中的数据结构类型 |
thread | 线程类型 |
table | 表类型 |
nil
nil表示一个无效值、空值,类似C#语言中的null,所有未赋值的变量输出都为nil。
由于nil代表空值,我们可以用它来实现删除功能。给全局变量或table表里的变量赋值为nil,相当于把这个变量删除了,大家可以自己编写代码测试一下。
boolean
boolean类型就等同于布尔(bool)类型,其值只有两个:true(真)和false(假)。在Lua中,除了false和nil为“假”之外,其余的所有变量都为“真”。
如上脚本,其输出为:
number
Lua对number的定义为双精度类型的实浮点数,即所有Double类型的数字。
string
字符串类型,Lua中没有字符(char)的类型,所有一串字符串可以由一对双引号或单引号来表示,如果字符串分了好几行,我们还可以使用"[[ ]] "来将其包起来。
对于字符串的具体用法和操作我将在后面的博客中详细的介绍~
table
Lua中的table是我最喜欢的一个类型,和其他语言对表的创建一样,table的构造表达式由{}加上一些数据组成,一个最简单的构造表达式为{},也意味着创建一个空表。
table最大的特点在于其类似字典的key-value特性,即为一个关联数组。数组的默认索引以数字1开始,我们也可以自己为table中的值赋上索引,可以为字符串或数字。
table的长度会自动增加,所以在定义时也无需我们定义好长度。
如上代码,其输出为
function
function在Lua中为函数的意思,我们在定义一个函数时,只需以function加上函数名和形参,并以end结尾即可。函数的类型以及是否有返回值都是不需要定义的,只是我们自己得清楚这个函数具体会做些什么。
Lua中的函数还可以当做参数来传递,想想看在C#中我们还得通过委托才能实现这一功能,所以Lua脚本的编写是十分便捷的~
如上代码,其输出为打印出tab表的索引和内容:
thread
thread线程应用于一系列可并行执行的任务中,旨在节省时间,提高效率。学过爬虫程序的人就非常清楚线程的重要性。在Lua中,最主要的线程名为协同程序。
userdata
userdata是一种用户自定义数据