Lua中調用.和:的區別

在Lua中,我們經常可以看到用.調用函數和用:調用,那麼這兩個到底有什麼區別呢?

例子:



1-------function  PromoTion:addRightCell(info)
    self.selectId = info.id //這裏是給 self.selectId賦值
    self:updateRightCell()//這裏開始調用函數,注意是用:調用了自己的函數
end


2-------function PromoTion:updateRightCell()

//這個函數沒有參數,但是我們看看self裏面有沒有上面調用的selectId變量

if self.selectId then
print("current self.selectId="..self.selectId)

end

//這裏是會輸出self.selectId的

end



解釋:

因爲在lua中,按我自己的理解,self就是C++裏面的this,在我們使用:調用的時候,不管你有參數或者沒有參數,默認的就是會傳一個self進去,所以你在1裏面調用的時候就是把自己的當前的self給傳了過去,當然你的變量也過去了

2裏面雖然沒有參數,但是因爲默認是有一個調用者的self,所以你可以使用它並且訪問調用者的內容


所以,相比較  .   調用,:   是隱式的帶了一個調用者的self給了被調用者


依上如果用.調用,self.updateRightCell(self)就要顯式的加上參數self了,這個需要注意不然裏面的self是找不到變量輸出的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章