您的位置:首页 > 编程语言 > Lua

lua学习笔记

2014-01-16 11:29 267 查看
一直都用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

这样就能解决这个问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: