Lua开发过程中遇到的一些小问题

1.lua连接字符串的时候用string.format比".."慢 ,a..b..c不会产生b..c这些中间结果,..运算符会收集所有字符一次性连接。详见http://yulinlu.blog.163.com/blog/static/58815698201231502544486/ 博客中Leno博主的分析。另外如果有几万个字符串需要连接,由于..运算符不能一次性连接(写不下),这个时候不能用..运算符去循环连接,否则极慢。更好的方案是将几万个字符串放在table里面用table.concat连接,和..一样,可以避免产生中间结果。

 

2.#运算符只能对严格按照序号保存数值的table正确应用,不然输出值是比较危险,比如以下代码:

local tt = {1,2,3,4,5,6,7,8,9,10,nil,12,nil,14}
tt[5] = nil
local lent = #tt
print("长度",lent)
tt[15] = 7
tt[14] = nil
local lent = #tt
print("长度",lent)

  输出为“长度 14”和“长度 12”,这个明显不是预期的。所以对中间可能有nil的table使用#是危险的。

  使用ipairs时,目前还没有发现会出问题,是可以从序号1、2、3开始,一直遍历到第一个序号对应的值为nil的地方停止。推荐还是使用ipairs。

 

3.注意Lua中“=”号是指针拷贝,下述fix_data其实就是item[i].data。

local fix_data = item[i].data

fix_data.open_from_skill_page = true

此时item[i].data.open_from_skill_page == true

 

4.lua中对两个变量进行比较有时候会返回false,但print出来又是一样的数字,这有可能是两者类型不同,需要用tonumber或者tostring强制转一下类型进行比较

转载于:https://www.cnblogs.com/mzdbskipop/p/3964735.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值