local xmtool = {}
–[[
@brief Defined some commonly used functions
@by xiaoming
]]
local countCode = [[
local i = 0
return function()
i = i + 1
return i
end
]]
—自定义计数器
xmtool.xmCounter = assert(loadstring(countCode))
———————————
–获得类的单例函数
–@param clss 要获得单例的类
–@param singleton 需要获得的单例
–@return clss 的singleton
———————————
function xmtool.getSingleton(clss,singleton,…)
return singleton or clss:new(…)
end
—————————————
–包装回调函数,使得类方法定义1致化
–@param obj 要调用的函数的对象
–@param method function 要调用的函数
—————————————
function xmtool.handlerCall(obj, method)
return function(…)
return method(obj, …)
end
end
——————————————-
–字符串分割
–@param input 输入的字符串
–@param delimiter 用于分割的字符
–@return #table/如果分隔符为空,则返回false
——————————————-
function xmtool.splitStr(input, delimiter)
input = tostring(input)
delimiter = tostring(delimiter)
if (delimiter=='') then return false end
local pos,arr = 0, {}
— for each divider found
for st,sp in function() return string.find(input, delimiter, pos, true) end do
table.insert(arr, string.sub(input, pos, st – 1))
pos = sp + 1
end
table.insert(arr, string.sub(input, pos))
return arr
end
———————————–
–字符串分割
–@param input 输入的字符串
–@param delimiter 用于分割的字符
–@return #string
———————————–
function xmtool.getSplitStr(input, delimiter)
local arr = xmtool.splitStr(input,delimiter)
local str = ""
if(type(arr) ~= "table") then return tostring(input)
else
for i=1,#arr do
str = str..arr[i]
end
end
return str
end
—————————–
–打印信息
—————————–
function xmtool.skLog(…)
print(string.format(…))
end
———————–
——-打印日志———
———————–
function xmtool.printFuncMsg(msgInfo,tableFunc)
printInfo(msgInfo..",file:%s,line:%s",tableFunc.source,tableFunc.currentline)
end
—————————–
–打印相应堆栈信息
–msg 我们添加的自定义信息
—————————–
function xmtool.printTraceMsg(msg)
xmtool.skLog("—————————————-")
xmtool.skLog("MSG: " .. tostring(msg) .. "
")
xmtool.skLog(debug.traceback())
xmtool.skLog("—————————————-")
return msg
end
————————————–
–关键函数出错检测
–@param func #function 需要检测的函数
–@param msg 自定义信息
–@param level 毛病级别
————————————–
function xmtool.catchError(func,msg,level)
local state , message = xpcall(func,function() return xmtool.printTraceMsg(msg) end)
return state or error(message,level)
end
———————————
–将数字转为百分比字符串
–@param number 要转化的数字
–@param retain 要保存的小数位数
———————————
function xmtool.getPercentString(number,retain)
local ret = tostring(retain)
return string.format("%."..ret.."f".."%%",number*100)
end
波比源码 » 一些自定义的Lua常用的工具函数