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调用