Lua中可以使用“:”和“.”來定義、調(diào)用函數(shù)佃却,區(qū)別是:
- 使用“:”定義的函數(shù)薄榛,默認(rèn)接收第一個參數(shù)為self讳窟;
- 使用“:”調(diào)用函數(shù),默認(rèn)傳入調(diào)用者為第一個參數(shù)敞恋;
- 使用“.”定義和調(diào)用函數(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
一般情況下用“:”定義和調(diào)用就好硬猫,特殊情況下需要手動指定self時用“.”傳入self調(diào)用