大佬教程收集整理的这篇文章主要介绍了重载基础工具,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
function overloaded() local fns = {} local mt = {} local function oerror() return error("Invalid argument types to overloaded function") end function mt:__call(...) local argv = {...} local default = self.default local signature = {} for i,arg in ipairs {...} do signature[i] = type(arg) end signature = table.concat(signature,",") return (fns[signature] or self.default)(...) end function mt:__index(key) local signature = {} local function __newindex(self,key,value) print(key,type(key),value,type(value)) signature[#signature+1] = key fns[table.concat(signature,")] = value print("bind",table.concat(signature,")) end local function __index(self,key) print("I",type(key)) signature[#signature+1] = key return setmetatable({},{ __index = __index,__newindex = __newindex }) end return __index(self,key) end function mt:__newindex(key,value) fns[key] = value end return setmetatable({ default = oerror },mt) end
以上是大佬教程为你收集整理的重载基础工具全部内容,希望文章能够帮你解决重载基础工具所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。