lua学习笔记

最近要重启tolua项目,基础先过一遍

一、基本语法

    1.弱类型 local区分全局和局部
    2.销毁变量用 a = nil
    3.注释 --
    4.lua数组和table索引都是由1开始
    
二、数据类型
    1.基本类型
        nil    这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
        boolean    包含两个值:false和true。
        number    表示双精度类型的实浮点数
        string    字符串由一对双引号或单引号来表示
        function    由 C 或 Lua 编写的函数
        userdata    表示任意存储在变量中的C数据结构
        thread    表示执行的独立线路,用于执行协同程序
        table    Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
        
    2.访问类型
        print(type(true)) --> boolean type()可以访问数据类型,返回数据类型string名
    
    
    3.遍历表
        tab1 = { key1 = "val1", key2 = "val2", "val3" }
        
        a.
            for k, v in pairs(tab1) do
                print(k .. " - " .. v)
            end
            
            pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;

            ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key    
            
            pairs遍历时先遍历没有指定key的元素,后遍历指定key的元素,遍历时按定义的先后顺序
        
        b.
            访问table方式:table["key1"]、table.key1、table[1]
            前两种用来访问指定key的元素,后一种访问未指定key的元素
            
    3.nil和false被认为假,其他全部是真,0也是真
    
    4.lua只有一种number数字类型,是双精度double
    
    5.“2” + 6 lua会数字相加,与c#相反
    
    6.#计算字符串长度 a = "111";#a = 3
    
三、变量
    1.x,y = y,x 交叉赋值
    2.任何地方(包括function内部)没有用local标记的都是全局变量,function内部的赋值需要function执行之后才有效,执行之前是nil
    
四、循环语句
    1.for i=0,10,1 do end 循环包含10
    2.for k,v in pairs(a) do end 遍历table
    3.while true do end
    
五、函数
    1.local标记局部函数还是全局函数
    2.函数可以赋值,因此也可以作为参数传递
    3.lua支持变长参数add(...),select("#",...)可访问参数数量,select("#",...)可访问第n个参数
    
六、运算符
    1.与或非:and or not

七、字符串
    1.string.gsub("aaaa","a","z",3); 字符替换
    2.string.format("the value is:%d",4) 字符格式化
    3.string.len(arg) 计算长度 与#a类似
    4.没有c#的replace解码方式,需要手动实现

八、表
    1.table.sort(tab,comp)排序表,顺序由comp决定
    2.table.remove移除元素
    3.table.insert添加元素
    这三个函数用在数据层很方便

九、协程
    local WWW = UnityEngine.WWW
                             
    function testFunc()
        local www = WWW('http://bbs.ulua.org/readme.txt');
        coroutine.www(www);
        print(www.text);    
    end
        
    coroutine.start(testFunc)
    
十、原表和面向对象
    依赖table可模块化的特性,可以模拟出面向对象的特性,即封装成员变量和成员函数,原表的属性复制能力可以模拟面向对象的继承
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左右...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值