理解lua中 . : self


前言

在LUA中,經常可以看到:. self,如果你學習過Java或C#語言,可以這樣理解

.對於c#和java的靜態方法
:相當於是實例方法

今天在CSDN上看到一篇博客寫的很清楚,轉載過來

原文出處:http://blog.csdn.net/wangbin_jxust/article/details/12170233

 

lua編程中,經常遇到函數的定義和調用,有時候用點號調用,有時候用冒號調用,這里簡單的說明一下原理。

點號(.)定義和調用

girl={money=200}
function girl.goToMarket(girl,someMoney)
    girl.money= girl.money -someMoney
end
 
girl.goToMarket(girl,100)
print(girl.money)

可以看出,這里進行了方法的點號定義和點號調用。

冒號(:)定義和冒號調用

boy={money=200}
function boy:goToMarket(someMoney)
    self.money = self.money -someMoney
end
boy:goToMarket(100) -- 注意這里的boy:goToMarket(100) -> boy.goToMarket(self,100)
print(boy.money)

這里進行了冒號定義和冒號調用。

運行結果

以上的打印結果都是100。

可以看出,冒號定義和冒號調用其實跟上面的效果一樣。把第一個隱藏參數省略了,而該參數self指向調用者自身

 

相互調用

當然了,我們也可以點號定義冒號調用,或者冒號定義點號調用如:

man={money=200}
function man.goToMarket(self,someMoney)
    self.money = self.money -someMoney
end
man:goToMarket(100) -- 注意這里man:goToMarket(100) ->man.goToMarket(self,100)
print(man.money)

相互調用運行結果

image

 

總結

冒號只是起了省略第一個參數self的作用,該self指向調用者本身,並沒有其他特殊的地方。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM