lua方法点(.)调用和冒号(:)调用区别:



用.定义方法时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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值