一些自定义的Lua常用的工具函数
发布时间:2020-12-13 20:08:22 所属栏目:PHP教程 来源:网络整理
导读: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))---------
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,st - 1))
pos = sp + 1
end
table.insert(arr,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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |