Lua中的self

Lua中可以使用“:”和“.”来定义、调用函数,区别是:

  • 使用“:”定义的函数,默认接收第一个参数为self;
  • 使用“:”调用函数,默认传入调用者为第一个参数;
  • 使用“.”定义和调用函数,不会额外接收和传入self参数;
local A = {}
A.func1 = function(...)
    print("self is ", self, " args: ", ...)
end
A.func1("123")      -- self is nil  args: 123 
A:func1("123")      -- self is nil  args: table:0x2815926c0 123

function A.func2(...)
    print("self is ", self, " args: ", ...)
end
A.func2("123")      -- self is nil  args: 123 
A:func2("123")      -- self is nil  args: table:0x2815926c0 123

function A:func3(...)
    print("self is ", self, " args: ", ...)
end
A.func3("123")      -- self is 123  args: 
A:func3("123")      -- self is table:0x2815926c0  args: 123

一般情况下用“:”定义和调用就好,特殊情况下需要手动指定self时用“.”传入self调用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,906评论 0 38
  • lua编程中,经常遇到函数的定义和调用。我们有两种函数定义和调用的方法。一种是用属性的方式,另外一种是通过冒号的形...
    雨幻逐光阅读 11,344评论 0 3
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,859评论 2 9
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,663评论 0 5
  • 因一书友兼培训班同学,今天书法工作室二度装修后,举行挂牌笔会,市县书协领导齐聚一堂,群英荟萃,先交流书艺,谈字论画...
    三栖野鹤阅读 845评论 7 11