zoukankan      html  css  js  c++  java
  • lua学习笔记(三)

    类型与值
      lua是一种动态类型的语言,在语言中没有类型定义的语法,每个值都携带了它自身的类型信息
      lua中有8种基础类型
        nil
          只与自身相等assert(nil==nil),空值
        boolean
          true
          false
          nil和false是假,其它都是真,0和""都是true
        number
          浮点实数,没有使用整数
        string
          8位编码也就是个char
          可以包含任何字符,包括,很象stl里的string类,可以当二进制流看待
          string.len和#返回的是实现长度,不以为结束标记
          不可以修改字符串变量内容,只能重新赋值
          lua能高效的处理大字符串,不用怀疑lua字符串的处理能力
          特殊字符与c一样,如换行是 tab是
          多行字符串定义[[ ]]
          <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函数可以返回一个可以显示的字符串
     
     
     
  • 相关阅读:
    5.5,5.6
    5.1,5.2
    第四章.编程练习
    多源最短路径--flody算法
    Java 面试题
    python 打包exe程序
    sql优化
    二叉树
    todo: 队列、栈、散列集
    java注解
  • 原文地址:https://www.cnblogs.com/lifesteven/p/4169356.html
Copyright © 2011-2022 走看看