一些自定义的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))

---------------------------------
--获取类的单例函数
[email protected] clss 要获取单例的类
[email protected] singleton 需要获取的单例
[email protected] clss 的singleton
---------------------------------
function xmtool.getSingleton(clss,singleton,...)
	return singleton or clss:new(...)
end

---------------------------------------
--包装回调函数,使得类方法定义一致化
[email protected] obj 要调用的函数的对象
[email protected] method function 要调用的函数
---------------------------------------
function xmtool.handlerCall(obj, method)
    return function(...)
        return method(obj, ...)
    end
end

-------------------------------------------
--字符串分割
[email protected] input 输入的字符串
[email protected] delimiter 用于分割的字符
[email protected] #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

-----------------------------------
--字符串分割
[email protected] input 输入的字符串
[email protected] delimiter 用于分割的字符
[email protected] #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

--------------------------------------
--关键函数出错检测
[email protected] func #function  需要检测的函数
[email protected] msg  自定义信息
[email protected] 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

---------------------------------
--将数字转为百分比字符串
[email protected] number 要转化的数字
[email protected] retain 要保留的小数位数
---------------------------------
function xmtool.getPercentString(number,retain)
     local ret = tostring(retain)
     return string.format("%."..ret.."f".."%%",number*100)
end

时间: 2024-12-21 15:16:07

一些自定义的Lua常用的工具函数的相关文章

jquery常用遍历工具函数

遍历在这里 http://my.oschina.net/u/2352644/blog/508397 废话不多说,一个句话告诉你jq的遍历工具 我们对数组的循环一般是用for或者for in,这是原生js支持,同样既然用jq的了,咱jq也提供了对数组的遍历方法,也就是对原生js循环的封装 一.$.each()和for循环等不得不说的秘密 我们循环一个数组一般是下面的处理,利用for循环  var arr=[0,1,2];  for(var i=0;i<arr.length;i++){   aler

常用的工具函数

得到两个数组的并集, 两个数组的元素为数值或字符串 //tools.js export const getUnion = (arr1, arr2) => { return Array.from(new Set([...arr1, ...arr2])) } //调用页面 import { getUnion } from '@/libs/tools' // 示例 this.openedNames = getUnion(this.openedNames, this.getOpenedNamesByAc

Js常用的工具函数

1.获取uuid:这个是通过随机数生成 let getUuid = () => { var i, random; var uuid = ''; for (i = 0; i < 32; i++) { random = Math.random() * 16 | 0; if (i === 8 || i === 12 || i === 16 || i === 20) { uuid += '-'; } uuid += (i === 12 ? 4 : (i === 16 ? (random & 3

NSPathUtilities.h常用路径工具、函数和方法

分类: 网络安全/ 工具使用/ 文章 常用路径工具函数 NSString * NSUserName(void) 返回当前用户的登录名 NSString * NSFullUserName(void) 返回当前用户的完整用户名 NSString * NSHomeDirectory(void) 返回当前用户主目录的路径 NSString * NSHomeDirectoryForUser(NSString *user) 返回用户user的主目录 NSString * NSTemporaryDirecto

从零开始学习jQuery (九) jQuery工具函数

原文:从零开始学习jQuery (九) jQuery工具函数 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQ

js常用工具函数大全

项目中经常会用到的js工具函数,待更新: 小于10补0,常用于日期月份补0: // 小于10补0 function format(n) { return n.toString().replace(/^(\d)$/, '0$1'); } 千分位显示,常用于价格显示: // 千分位 function toThousands(num) { return parseFloat(num).toFixed(2).replace(/(\d{1,3})(?=(\d{3})+(?:\.))/g, "$1,&quo

lua常用函数

select (index, ···) 功能:当index为数字将返回所有index大于index的参数: 如:select(2,"a","b","c") 返回 "b","c" 当index为"#",则返回参数的总个数(不包括index) 如:select("#","a","b","c") 返回 3 lua常

Lua 常用函数 一

http://blog.csdn.net/xuzhonghai/article/details/7239195 lua_getallocf lua_Alloc lua_getallocf (lua_State *L, void **ud); 返回给定状态机的内存分配器函数.如果 ud 不是 NULL ,Lua 把调用lua_newstate 时传入的那个指针放入*ud . lua_getfenv void lua_getfenv (lua_State *L, int index); 把索引处值的

python自定义函数、常用内置函数

1.python自定义函数 Python中用户自己编写的用于实现特定功能的函数代码块,就是自定义函数. 如: def是关键字,saa是自定义函数名,括号用于传参,可以不写参数,冒号后面是函数代码块,这里只写了一条print语句 注意:函数不调用不执行,只有调用函数才会执行 小练习1: 执行结果是: : 再来看一个小练2: 这是一个用来生成双色球的小程序,如蓝色球号码 01 红色球 22 12 23 14 05 26,蓝色球数字范围1-16,红色球数字范围1-33,最后一行调用produce()自