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()
  • 相关阅读:
    枚举与常量需要注意的一个问题
    parted分区用法
    Linux下常用服务的端口号
    NFS服务
    mount用法
    Rsync服务部署
    常见的RAID级别
    SQL注入语句 (很全)
    数据库被注入daxia123或cn.jxmmtv.com原因及解决办法
    StringTemplate.net模板技术用法
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/6143357.html
Copyright © 2011-2022 走看看