一些自定义的Lua常用的工具函数
来源:程序员人生 发布时间:2015-05-04 09:36:23 阅读次数:3424次
sk = sk or {}
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
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠