学习传送门:https://www.runoob.com/lua/lua-data-types.html
本来在学剪辑的,最近工作没什么时间,可能后面项目要用全lua开发,趁着空闲先学习一下基础的东西。
1.数据类型
8种类型:nil(空)、number(long/int/float/double都直接用这个)、boolean(ture/false)、string、function(方法)、userdata(自定义数据)、thread(跟协程不一样)、table(表)
注:lua中变量声明不需要声明数据类型,直接给变量赋值,没有赋值的变量默认是nil
正确声明:a=5 错误声明 int a=5(用惯了c#声明不写类型好难适应)
(1)Nil(空)
将一个已经赋值的变量,赋值为nil的话,就相当于删除操作,nil拿来做比较的时候,如果是字符串的话应该用"nil"。
(2)boolean---常用的bool
跟bool类型一致的用法,含有两个值,true和false,lua中false和nil都是false,其他都是true,包括0也是true。
(3)number
lua中数字只有一种类型也就是number,这个类型包含long、int、float、double类型,number的默认类型是double,默认类型可以修改 luaconf.h 里的定义。
(4)string
""--字符串 ' '---字符 [[ ]]---字符块
放在[[ ]]里面的内容可以一整块的输出(实话说之前学的语言都没见过)。
在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:例如print("2"+6) lua输出-->8,字符串之间输出链接用的是"..",不是"+"。计算字符长度可以直接用 #string
(5)table--表
感觉和数组差不多,关联数组,又感觉像字典,创建的时候可以直接创建一个空表:tabTest={},也可以在创建的时候赋值 :tabTest={1,2,3,...},遍历或者取值的时候索引是从1开始,也可以这样创建:tabTest={k1=1,k2=2},类似字段的<key,value>结构。
table遍历:for key,value in pairs(tabTest) do
table取值:tabTest[key]---如果声明了key就可以直接用声明的,没有的话直接用索引,即使是一个不存在的索引,也不会报错,取出来值是nil,也可以直接给表中一个不存在的索引赋值。
(6)function---函数
在 Lua 中,方法内部没有{},方法声明用关键字function,方法结束用end表示,函数是被看作是"第一类值(First-Class Value)",函数可以存在变量里,也就是函数可以直接给一个变量赋值,例如:
function HelloWorld(n) end
helloWorld=HelloWorld 可以直接这样赋值给helloWorld,helloWorld被调用时需要传HelloWorld的参数,方法体一致。
方法可以作为匿名参数(66666),如:
(7)thread(线程)
在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
(8)userdata
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
如果有不正确的地方,欢迎评论指出
南投北浪 2020/4/21