一些自定義的Lua常用的工具函數
來源:程序員人生 發布時間:2015-05-04 09:36:23 閱讀次數:3622次
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
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈