Lua学习篇③——数据类型

学过C\C++、C#等主流编程语言的人都清楚,这些语言中对数据类型都有明确的定义,整型必须定义为int、字符串必须定义为string等。而Lua对变量类型的定义是动态的,也就是说对于一个变量,我们不需要类型的定义,只需要对其赋值即可。动态的类型有好有坏,好的方面在于我们无需关心一个数据具体是什么类型,直接定义,快捷,简便,也符合了作为轻量级脚本语言的特性;坏的方面在于有时候代码写长写多了,我们会忘记某个变量一开始赋值时的类型,在之后一些参数传递上会出现类型不匹配等问题。不过作为嵌入其他程序中的脚步语言,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是一种用户自定义数据

猜你喜欢

转载自blog.csdn.net/qq_35445058/article/details/80898761