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()
  • 相关阅读:
    TZOJ 4085 Drainage Ditches(最大流)
    [国家集训队2]Tree I
    [USACO17DEC]Push a Box
    专题总结(图论)
    专题总结(分块)
    [noi.ac_D1T2]sort
    [Poi2004]SZN
    [HEOI2016/TJOI2016]求和
    [CF528D]Fuzzy Search
    [bzoj5093]图的价值
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/6143357.html
Copyright © 2011-2022 走看看