类型与值
  lua是一种动态类型的语言,在语言中没有类型定义的语法,每个值都携带了它自身的类型信息
  lua中有8种基础类型
    nil
      只与自身相等assert(nil==nil),空值
    boolean
      true
      false
      nil和false是假,其它都是真,0和""都是true
    number
      浮点实数,没有使用整数
    string
      8位编码也就是个char
      可以包含任何字符,包括\0,很象stl里的string类,可以当二进制流看待
      string.len和#返回的是实现长度,不以\0为结束标记
      不可以修改字符串变量内容,只能重新赋值
      lua能高效的处理大字符串,不用怀疑lua字符串的处理能力
      特殊字符与c一样,如换行是\n tab是\t
      多行字符串定义[[ ]]
      \<ddd>一至三个数据表示字符,ASCII码
      在字符串上使用数学运算会先前字符串转换成数字
      ".."是字符串连接操作符"wang".."ning"
      在数字后使用字符串连接操作符".."时,要有一个空格,不然会认为是小数点
      尽量不要依赖lua的自动类型转换,可以使用tostring,tonumber手动转
    userdata
      一块由c向lua申请的内存,存在lua里,申请者自行解析
    function
      lua中的函数是作为”第一类值“,可以随意赋给一个变量
    thread
      协同线程lua没有真正的多线程,他都是串行执行的,生产者消费者模式
      只能自己停止自己
      可以使用守护线程来在多个协同线程中通过状态判断来模拟多线程的环境
    table
      lua里唯一的一种数据结构
      lua里的module package object都是用table实现的
      table是一个对象,所有对他的
      可以表示出多种数据结构
        数组
          可以不写key添加数据如:t={1,2,3,4}
          自动定义从下标1开始顺序向后加一
          所有没有显示声明key的项都是自动生成数组下标的
          lua里与c不一样的地方就是一标都人1开始,一定记住
          t={"a", 2="b", "c", 4=1, 2, 6=3}
          t[1] = "a"
          t[2] = "c"
          t[3] = 2
          t["2"] = "b"
          t["4"] = 1
          t["6"] = 3
          后面三项不再是数组而是hash表
          使用#可以得到数组长度,但要求所有下标是从1开始连续的
          t={}
          t[1] = 1
          t[100] = 100
          的长度是1,因为它以找到nil的值为结束,以上的定义方式数组断了
          二维数组就是table套table
          t={ {100,200}, {300,400}}
          t[1][1] = 100
          t[1][2] = 200
          t[2][1] = 300
          t[2][2] = 400
        链表
          t1 = {p=t3, v="value", n=t2}
          t2 = {p=t1, v="value", n=t3}
          t3 = {p=t2, v="value", n=t1}
        环形链表
        hash表
        队列
        栈
      可以使用lua中的任何类型作key和value,除nil不能当key,当value是删除
      只能显示的声明一个table,t = {}
      添加数据
        t = {"a","b","c",1,2,3}
        t={1="a",2="b",3="c",4=1,4=2,6=3}
        以上两人个定义不相等,显示声明时字符串类型的key可以不写双引号
        t[1] = "a"
        t[2] = "b"
        t[3] = "c"
        t[4] = 1
        t[5] = 2
        t[6] = 3
        这个与第一个相同
        t["1"] = "a"
        t["2"] = "b"
        t["3"] = "c"
        t["4"] = 1
        t["5"] = 2
        t["6"] = 3
        这个与第二个相同
        t={x="lua"}
        t={} t.x="lua" t["x"] = "lua"
  使用type函数可以返回一个可以显示的字符串
 
 
 

lua学习笔记(三)的更多相关文章

  1. LUA学习笔记三·时间等操作系统库

    1.构造时间 2.时间制定格式输出 3.计时器(闭包)os.difftime (t2, t1) 返回以秒计算的时刻 t1 到 t2 的差值. (这里的时刻是由 os.time 返回的值). 在 POS ...

  2. [转]LUA 学习笔记

    Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...

  3. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  4. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  5. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  6. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  7. Lua 学习笔记(一)

    Lua学习笔记 1.lua的优势 a.可扩张性     b.简单     c.高效率     d.和平台无关 2.注释 a.单行注释 --        b.多行注释 --[[  --]] 3.类型和 ...

  8. Lua学习笔记6:C++和Lua的相互调用

        曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有.     新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...

  9. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  10. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

随机推荐

  1. HDU 1847 【巴什博弈】

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  2. Fiddler在fiddler option设置还是抓不了HTTPS包解决办法

    1:请在“运行”,即下面这个地方输入certmgr.msc并回车,打开证书管理. 打开后,请点击操作--查找证书,如下所示: 然后输入“fiddler”查找所有相关证书,如下所示: 可以看到,我们找到 ...

  3. tyvj——P1001 第K极值

    P1001 第K极值 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 成成第一次模拟赛 第一道 描述 给定一个长度为N(0<n<=10000)的序 ...

  4. teamviewer13报错

    用自己的笔记本电脑远程桌面AGV电脑在终端运行teamviewer报错如下: Init...CheckCPU: SSE2 support: yesChecking setup...Launching ...

  5. Could not automatically select an Xcode project

    当把CocoaPods生成的workspace移动到上层目录时,需要改下Pods.xcconfig和工程里的一些设置,就通常没什么难度. 当遇到这个问题时: Could not automatical ...

  6. Visual Studio Package扩展——vsct文件简介

    首先我们使用向导生成一个package的扩展,里面就会发现一个vsct文件.vsct文件的全称是Visual Studio Command Table,它其实就是一个xml文件,通过一定的规则来描述v ...

  7. Go -- 卸载 Go

    直接删除usr下的go文件夹即可 命令行: cd / 1 然后: open usr 1 删除go文件夹

  8. JComboBox添加item的赋值类型问题!不一致的话会导致不能更改jcombobox的选择值

    在用swing做页面的时候,往往需要设置字体样式,那么,如何用一种方法设置字体之后,在后面的其他页面就不需要再次设置字体了呢? 下面这个方法就可以解决了: JComboBox在对它进行添加子项的时候, ...

  9. selenium firefox设置代理

    from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference('network. ...

  10. 2017.6.29 移除再导入maven module到IDEA中时提示: Unable to proceed. Nothing found to import.

    解决办法来自:https://stackoverflow.com/questions/18278016/re-importing-modules-into-intellij 场景: 将其中一个modu ...