Lua中可以使用“:”和“.”來定義、調用函數(shù),區(qū)別是:
- 使用“:”定義的函數(shù),默認接收第一個參數(shù)為self;
- 使用“:”調用函數(shù),默認傳入調用者為第一個參數(shù);
- 使用“.”定義和調用函數(shù),不會額外接收和傳入self參數(shù);
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調用