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中的self)