加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua学习笔记

发布时间:2020-12-14 22:13:05 所属栏目:大数据 来源:网络整理
导读:?????? 一直都用lua,但其实很多细节并没掌握好啊,今天总结一下。 ????? lua中的实例:当你使用lua模拟类的实例的时候,特别要注意变量的初始化。如果初始化是在一开始,那么 它就是静态变量,为所有类共享。 ???? 例如: union = { ?????? data = {}, } fu

?????? 一直都用lua,但其实很多细节并没掌握好啊,今天总结一下。

????? lua中的实例:当你使用lua模拟类的实例的时候,特别要注意变量的初始化。如果初始化是在一开始,那么

它就是静态变量,为所有类共享。

???? 例如:

union = {

?????? data = {},

}

function union:new(o)
?? ?o = o or {}
?? ?setmetatable(o,self)
?? ?self.__index = self
?? ?return o
end

function union:init(data)
?? ?self.data = data or {}
?? ?if not self.data.unionNotice then
?? ??? ?self.data.unionNotice = ''
?? ?end
end


以上是错误的例子,因为data是属于union的 你用new出来的o去使用共享的data,只会出现混乱,应该取消

data的一开始的初始化,改成

union = {

}

这样就ok了。


???? lua中的排序:lua中的排序有一个隐形的规则,甚至可以说是一个bug,当你的排序函数中有>=或者<=的时候

可能认为排序算法出错。比如你sort(a,b) 为true? sort(b,a)也是true,那么就有概率出现这种错误,具体源代码我没去看,为了实现

稳定排序,建议不适用任何>=以及<=,也可以对==进行特殊处理。


??? lua中的模式:string.find("abc","abc") 应该是有值的,但string.find("abc-dca","abc-dca")却是nil,因为第二个参数是模式,在模式中

"-"是特殊含义字符,需要转义,转义为%:

???? local tmpStr = string.gsub(marketId,'%-','%%%-') ?? ?if string.find(contractStr,tmpStr) then return true end ?? ?return false ??? 这样就能解决这个问题了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读