程序员人生 网站导航

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

栏目:php教程时间:2015-05-04 09:36:23
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

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐