用.定义方法时object.func_name(arg1,arg2...),方法真正的函数签名形式为: object.func_name(arg1, arg2...)
用:定义方法时object:func_name(arg1,arg2...),方法真正的函数签名形式为: object:func_name(self, arg1, arg2...)使用.调用方法时object.func_name(arg1,arg2...),真正调用方式为:object.func_name(arg1,arg2...)
使用:调用方法时object:func_name(arg1,arg2...),真正调用方式为:object:func_name(self, arg1,arg2...)定义: object.func_name(arg1,arg2...)
调用: object.func_name(arg1,arg2...)定义: object:func_name(arg1,arg2...)
调用: object.func_name(object, arg1,arg2...) 或 object:func_name(arg1,arg2...)代码示例:
function inherit(base, derive) derive = derive or {} if type(base) == "table" then setmetatable(derive, base) base.__index = base derive._super = base end return derive end local base = {x=1} function base:print() print("base class", self.y) end local derive = inherit(base,{y=2}) function derive:print() print("derive class") end function derive:test() self._super:print() -- base class nil self._super.print(self) -- base class 2 self.print() -- derive class end derive:test()
转载于:https://www.cnblogs.com/--xiaoyao--/p/6143357.html