lua 中點號與冒號的區別

2021-07-07 04:36:58 字數 859 閱讀 2832

曾經遇到面試題目,面試官給的題目大概是這樣, a 是乙個table ,請你說出a.foo() 與a:foo() 的區別。我也只能呵呵了,因為我根本就不會。因為工作中對lua 根本就是看看**就開始埋頭敲**了。

看下面**:

a = 

function a:inscrease()

self.count = self.count + 1

endfunction a:getcount()

return self.count;

enda:inscrease() --acount+1

print(a:getcount()) --輸出1

a.inscrease(a)--account+1

print(a:getcount(a)) --輸出2

上面的例子中 a:inscrease() 跟a.inscrease(a) 是等效的,a:inscrease 隱藏了self物件,這個跟c++中隱藏this指標是乙個道理。冒號的作用是在乙個方法定義中新增乙個額外的隱藏引數,以及在乙個方法呼叫中新增乙個額外的實參。只是語法上的便利,沒有引入任何新的東西。也可以用點語法定義,用冒號語法呼叫。所以上面的**也可以寫成這樣:

a = 

function a.inscrease(self)

self.count = self.count + 1

endfunction a:getcount(self)

return self.count;

enda:inscrease() --acount+1

print(a:getcount()) --輸出1

lua中冒號 與點號 的區別

原文 在lua開發中我們經常會混淆這兩者之間的區別,下面通過乙個示例來解釋 class class.index class function class.new x,y local cls setmetatable cls,class cls.x x cls.y y return cls endfu...

Lua點號和冒號區別

點號和冒號的區別 定義和呼叫時 第乙個引數是否有隱藏引數self 點號 第乙個引數無隱藏引數self 冒號 第乙個引數有隱藏引數self eg local test local test function test func arg1,arg2 print arg1,arg2,self endfun...

lua 點號,冒號,self

1 self類似c 中的this指標,指向當前正在使用這個table的例項 2 點號就是基本的table索引的方式 3 冒號,記住一點就是省略self這個引數的作用,無論是在定義函式,還是在呼叫函式都是這個作用。冒號只能用於函式呼叫和定義,不能用於其他的情況 local mt mt.num 100 ...