Lua学习笔记(1)-----数据类型

学习传送门: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