本帖最后由 秋风落叶 于 2021-8-22 19:55 编辑
接上章,掌握了基本的语法组成结构后,接下来我们熟悉了解一下,我们在开发中组建"房屋"的其他属性:数据类型. 在硅基世界中,以偏概全的说,所有的基本元素的组成都离不开"数据"的概念,用我们人类能理解的不精确解释可以粗狂的说人类是一块块肉一块块骨头一条条神经还有血液等等类型组成,而我们这一块快肉一块块骨头等等这些基本粒子单位所组建出来的元素就演变成了"数据结构",其所具备的属性值便是"数据类型".
Lua是动态语言,我们不需要为变量进行类型声明,但不代表我们所赋值的元素不具备类型,在Lua中有8种基本类型:
1.nil :表示一个"无效值",但并不代表"没用",可用来"置空","区别类型"等作用,其参与bool条件时充当扮演false角色.
用例:local a=nil 或 local a(进行声明但不赋值也是nil)
2.boolean:布尔值,一个由人名命名的数据类型,简易来说,他的结果只有2个:true和false(nil也属false),你可以认为true为"对",false为"错".或"真""假",在或者"是""否".有兴趣的可以去查阅乔治·布尔来认识一下他的由来.
用例:local a=true local b=false
3.number:数字形式存在的值,Lua里并没有整形,长整形,有符号,无符号等等各种说法存在,实际上他是以double(双精度浮点数)类型的形式存在的.
简化理解:他是一个具备表达数值的类型.
用例: local a=1(整数) local b=2.0(含小数) local c=2e3(e记数)
4.string:字符串类型,可以表达的方式有:一对双引号("你要的内容"),或一对单引号('你要的内容'),在或者是两对中括号([[你要的内容同]]),其中第三种常用于多行字符串,他具备不改变其内部转义符的能力,大家可以尝试用多行注释当时讲到的技巧:[===[你要的内容]===] 这种方式.自行尝试一下.
用例:local a="你好"
local b='你好'
local c=[["你所看到的,正如'你所看到的'一样,
中括号[]的魅力无所不在~~!!"]]
在lua里string属于不可变类型.变量开辟内存空间后他的存储地址是唯一性的,这样理解一下: a="你好" 这时候的变量a被分配了一个内存空间地址,如果变量a中的"你好"属性值发生了变化,同时变量a在内存中的地址也随之发生改变,这种类型称之为不可变值.
5.userdata:用户自定义数据,隶属于C语言库中的数据结构类型,其本身的值为初始的一块内存空间,他的存在可以结合C语言的数据类型为lua使用,并且只能通过C的api进行修改,lua只具备只读权限,由于C语言课程未完结,只能层面上的解释一下.有机会以后深入研究在做深入解析.
6.function:函数类型,Lua本身或者C语言编写的函数,lua中的变量较其他语言是相对特殊的,在Lua中,function可以用变量来存储(实际上是引用的关系),Lua的标准库就是用C语言编写的,所以具备了良好的传承兼容能力(可以用C来编写Lua的拓展库及插件).
7.thread:线程类型,Lua里是协同线程,不同于多线程,协同是依次进行的,在同一时间内只有一个协同程序工作,其他的为挂起状态,他们属于同一线程,和多线程有较多出入.
8.table:表类型,Lua里的table也属于复杂类型数据,他的使用方法为一对大括号组成{},其中含义相同于其他语言的do ... end ,也称为语句块,table是Lua里的重要知识点其一,这里只简述其类型,以后教程针对性的在书写其他知识点.
用例:local a={} --这是一个空表
local a={b={},c={}}
local a={222,"hi",true,nil,b=function() print("table类型") end } --这是一个具备nil类型,布尔类型,字符串类型,数字类型和function类型的一个table表集合
在插一句,lua中function类型,table类型,userdata和thread类型在变量中都是引用方式.这一章的数据类型,涉及面偏多,至于新手萌新如果听不懂的地方可以直接跳过,8个类型熟记一下即可.以后入门后在翻看文章和进行深入了解.
By: [[===[[.....>>> 秋 风 落 叶 <<<.....]]===]]
|