zoukankan      html  css  js  c++  java
  • lua中冒号(:)与点号(.)的区别

    在lua开发中我们经常会混淆这两者之间的区别,下面通过一个示例来解释:

    Class = {}
    Class.__index = Class
      
    function Class.new(x,y)
        local cls = {}
        setmetatable(cls, Class)
        cls.x = x
        cls.y = y
        return cls
    end
    function Class:test()
        -- 等价于
        -- function Class.test(self)
        print(self.x,self.y)
    end
    
    object = Class.new(10,20)
     
    object:test() -- 等价于
    object.test(object)

    可以看到: 
    1、 定义的时候: Class:test()与 Class.test(self)是等价的 ,点号(.)要达到冒号(:)的效果要加一个self参数到第一个参数; 
    2、 调用的时候: object:test() 与object.test(object)等价 ,点号(.)要添加对象自身到第一个参数。 

    总结:可以把点号(.)作为静态方法来看待,冒号(:)作为成员方法来看待。

  • 相关阅读:
    day06 tar命令使用,vim简单操作以及linux开机过程
    day05 创建用户过程、文件夹,文件等权限修改等
    简单算法
    day04
    day03
    Vim常用快捷键
    day02
    ssh注解开发
    spring07 JDBC
    spring06Aop
  • 原文地址:https://www.cnblogs.com/gao88/p/6758292.html
Copyright © 2011-2022 走看看