lua中.和:均可以用於方法的聲明和調用。和table配合使用。
:和.最大的不一樣點,就是:會把調用者自身,傳入到函數中。
以下代碼:java
c = {a=1,b=2} function c:foo1() print(self.a,self.b) end c:foo1()
定義了一個名字爲c的table,使用:在table中聲明瞭一個foo1方法,
在方法內部使用self來訪問table中的變量。這裏的self相似於java類中的this。
調用的時候使用:來進行調用。這樣就能輸出 1,2。函數
假如使用.號調用,就必需要傳入c自己。c.foo1(c)this
這段代碼也能夠用.號聲明。.號聲明的代碼中,就不能有self。要手動傳入obj對象。lua
function c.foo2(obj) print(obj.a,obj.b) end c.foo2(c)
固然調用的時候,也能夠使用c:foo2()。會自動把c自己做爲參數傳入到方法中。這樣等效於c.foo2(c)code