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()
  • 相关阅读:
    迭代器,生成器的理解
    需求
    关于dom 0级 2级 3级事件的理解
    夯实前端基础
    前端面试题 收集
    前端易忘点,持续更新
    form target 文件上传
    ES6 symbol
    bzoj1260 [CQOI2007]涂色paint
    bzoj1083 [SCOI2005]繁忙的都市
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/6143357.html
Copyright © 2011-2022 走看看