lua 学习总结

1、table在初始化构建的时候,需要使用 []中括号进行声明值的键值。在没有添加键值情况下,默认键值是从1开始,并且以此往后递增。(使用#表名,只能获取是以数字为键值的长度)

2、在遍历table表的时候,#表名 ----只会获取表中从1开始到结束是数字,要求是数字是连续下去 、ipairs(表名)----只会获取从1开始连续不断的键值数据。ipairs的作用是保证输出的值是按照从数值键值排序输出table数据的值。而Pair是的作用是保证数据中的每一个值都能够输出,但是循序是根据hash的循序进行输出。

3、table在赋值的之后,数据之间的循序会根据hash值来进行排序。所有对应的输出结构会发生改变。导致的结果是对应的输出结构发生改变。

4、table.maxn(表名),在lua5.3中已经没有该方法的使用

5、lua中只将false、nil当作是false进行处理,其他都视为true。

6、and、or 逻辑操作符有别于其他语言。这两个操作符返回的是运算中的结果值。例子:2 or 5 --2
2 and 5 --5

7、local tab ={x=1,y=z} 在这里x 、y 会被当做 是字符串处理,与外界变量不关。
local tab ={[x]=1,y=z} 在这里x是被当做外层变量名进行处理。但是对于这两个的初始化构建table的时候,z变量时使用上层的环境变量来进行使用。

8、多重赋值的长应用于,变量值的交换;函数返回多个变量值,用多个变量来获取相应的函数返回的结果值。

9、循环for 、while、repeat……until 。在这三个循环语句中,for循环又分为数字型for、泛型for的使用.

10、math.random(x[,y]) 该方法产生在xy之间的数字,但是在math.randomseed(z)设置随机种子,如果设置相同的随机种子就会每次运行math.random(x[,y]) 产生相同的数。一般采用当前的 时间的倒叙的6位数进行相应的种子设置。math.randomseed(tostring(os.time()):reverse():sub(1,6))

11、在函数多重返回值的时候,会自动匹配要赋值的数值;但是在函数调用的时候,函数后面还有值的情况,函数只会返回前一个值。

12、select(“index”,...),在可变参数...中可以是nil ,如果获取可变参数的长度,写法select(“#”,...),nil 也会算入长度。

13、pcall(x) ,其中x的参数名是一个定义的参数名字,该函数就会自动调用该函数。例子:local status ,err = pcall(function() x = "a"+1 end) 在运行时产生的错误会被pcall()函数捕获到。并且打印错误信息。在这过程中运行时程序抛出了一个错误。而 error() 函数就有抛出错误的作用。

14、协程:协程有四个状态(suspended、running、normal、dead)。当调用coroutine.create(函数),该协程的状态就是suspended、当调用coroutine.resume(协程),该协程的状态就会变成running状态(如果在协程运行的时候调用了其他协程,该协程的状态就会变成相应的normal,但是当其他协程结束是时候就会继续执行当前协程里面的动作),当协程执行完成之后,协程的状态就会进入dead。只要协程进入dead状态后,coroutine.resume(协程)就没有用。因为该协程已经死了,不能被唤醒了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值