zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    面试题准备
    ImageList控件
    修改Visual Studio 2010 帮助文件库的位置
    委托与事件(续)
    PictureBox
    我的廣播情緣12/26
    回首我的2007 12/25
    水晶報表:列印支票金額12/12
    聖誕節快樂
    新年快樂
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/6143357.html
Copyright © 2011-2022 走看看