• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

用.定义方法时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人参与评论

请发表评论

全部评论

专题导读
上一篇:
luatable与json的之间的互相转换高性能c++实现发布时间:2022-07-22
下一篇:
lua 数据类型发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap