一些自定义的Lua常用的工具函数

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



---------------------------------------
--包装回调函数,使得类方法定义一致化
--@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) .. "\n")
    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


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值