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()
  • 相关阅读:
    linux ss 命令
    linux netstat 命令
    linux firewalld 命令
    linux sshd 服务
    linux rysnc 命令(远程复制)
    linux scp 命令
    linux ifconfig
    linux /var/log 日志文件
    linux systemctrl 命令
    linux 创建新用户并设置管理员权限
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/6143357.html
Copyright © 2011-2022 走看看