lua 工具类(二).docx
文本预览下载声明
HYPERLINK /newlist/p/3595761.html lua 工具类(二)
local tonumber_ = tonumber
function tonumber(v, base)
return tonumber_(v, base) or 0
end
function toint(v)
return math.round(tonumber(v))
end
function tobool(v)
return (v ~= nil and v ~= false)
end
function totable(v)
if type(v) ~= table then v = {} end
return v
end
function clone(object)
local lookup_table = {}
local function _copy(object)
if type(object) ~= table then
return object
elseif lookup_table[object] then
return lookup_table[object]
end
local new_table = {}
lookup_table[object] = new_table
for key, value in pairs(object) do
new_table[_copy(key)] = _copy(value)
end
return setmetatable(new_table, getmetatable(object))
end
return _copy(object)
end
function class(classname, super)
local superType = type(super)
local cls
if superType ~= function and superType ~= table then
superType = nil
super = nil
end
if superType == function or (super and super.__ctype == 1) then
-- inherited from native C++ Object
cls = {}
if superType == table then
-- copy fields from super
print (superTyper is table);
for k,v in pairs(super) do cls[k] = v end
cls.__create = super.__create
cls.super = super
else
cls.__create = super
cls.ctor = function() end
end
cls.__cname = classname
cls.__ctype = 1
function cls.new(...)
local instance = cls.__create(...)
-- copy fields from class to native object
for k,v in pairs(cls) do instance[k] = v end
instance.class = cls
instance:ctor(...)
return instance
end
else
-- inherited from Lua Object
if super then
cls = {}
setmetatable(cls, {__index = super})
显示全部