lua中.和:的區別

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

相關文章
相關標籤/搜索