Lua點(diǎn)與冒號的區(qū)別

local _Tab = {[1] = "Hello Lua",x = 10}

--通過點(diǎn)調(diào)用一個(gè)普通的方法
function _Tab.BasicFunc()
    print("I'm a BasicFunc")
end

--通過點(diǎn)來調(diào)用并且傳遞一個(gè)自身
function _Tab.FuncWithSelf(selfTable)
    print("FuncWithSelf".." _Tab ")
    print(_Tab)

    print("FuncWithSelf".." selfTable ")
    print(selfTable)    
end

--通過點(diǎn)來調(diào)用巍扛,傳遞一個(gè)自身并且再傳遞一個(gè)值
function _Tab.FuncWithSelfArg(selfTable,otherArg)
    print("_Tab")
    print(_Tab)

    print("FuncWithSelfArg".." selfTable ")
    print(selfTable)

    print("FuncWithSelfArg".." otherArg ")
    print(otherArg)
end

--通過冒號來實(shí)現(xiàn)一個(gè)無參數(shù)方法
function _Tab:ColonFuncNoParam()
    print("ColonFuncNoParam".." _Tab ")
    print(_Tab)

    print("ColonFuncNoParam".." self ")
    print(self)
end

--通過冒號來實(shí)現(xiàn)一個(gè)有參數(shù)的方法
function _Tab:ColonFuncWithParam(arg)
    print("ColonFuncWithParam".." self ")
    print(self)
    
    print("ColonFuncWithParam".." arg ")
    print(arg)
end

Lua方法調(diào)用. :

方法的使用

  • 冒號操作會帶入一個(gè) self 參數(shù)肴捉,用來代表 自己腹侣。而點(diǎn)號操作,只是 內(nèi)容 的展開齿穗。
  • 在函數(shù)定義時(shí)傲隶,使用冒號將默認(rèn)接收一個(gè) self參數(shù),而使用點(diǎn)號則需要顯式傳入 self 參數(shù)窃页。

代碼定義

Example1

_Tab.BasicFunc()

--得到結(jié)果
--I'm a BasicFunc
  • 只是普通的調(diào)用方法打印一句話

Example2

_Tab.FuncWithSelf(_Tab)
--得到結(jié)果
--[[
    FuncWithSelf _Tab 
    table: 006B97C0
    FuncWithSelf selfTable 
    table: 006B97C0
--]]
  • 此處傳入自身_Tab給FixTableFunc這個(gè)方法
  • 局部變量selfTab和 _Tab同時(shí)指向 _Tab的指針跺株,如果改了selfTab, _Tab 也會變

Example3

_Tab:FuncWithSelf()
--[[
    FuncWithSelf _Tab 
    table: 00F19680
    FuncWithSelf selfTable 
    table: 00F19680
--]]
  • Tab.FuncWithSelf( _Tab ) == _Tab:FuncWithSelf()
  • 因?yàn)槊疤栒{(diào)用方法時(shí),會默認(rèn)把自身傳遞進(jìn)去

Example4

_Tab.FuncWithSelfArg(_Tab,12)

--打印結(jié)果是
--[[
    _Tab
    table: 007F9748
    FuncWithSelfArg selfTable 
    table: 007F9748
    FuncWithSelfArg otherArg 
    12  
--]]
  • _Tab和selfTable的內(nèi)存地址是一樣的脖卖,otherArg = 12

Example5

_Tab:FuncWithSelfArg(12)
--[[
    _Tab
    table: 00F698D8
    FuncWithSelfArg selfTable 
    table: 00F698D8
    FuncWithSelfArg otherArg 
    12
--]]
  • Tab和selfTable內(nèi)存地址相等乒省,冒號方法默認(rèn)傳入 _Tab給FuncWithSelfArg方法
  • 然后把12賦值給otherArg

Example6

_Tab.ColonFuncNoParam(_Tab)

--[[
    ColonFuncNoParam _Tab 
    table: 00C49978
    ColonFuncNoParam self 
    table: 00C49978
--]]

_Tab.ColonFuncNoParam()
--[[  
    ColonFuncNoParam _Tab 
    table: 00B298B0
    ColonFuncNoParam self 
    nil
--]]

  • 用點(diǎn)來訪問一個(gè)冒號方法,必須傳入自身
  • 如果不傳則self為空畦木,則不能通過self修改自身

Example7

_Tab:ColonFuncNoParam()

--[[  
    ColonFuncNoParam _Tab 
    table: 01039798
    ColonFuncNoParam self 
    table: 01039798
--]]
  • 通過冒號去調(diào)用一個(gè)冒號方法袖扛,默認(rèn)就傳入了self,所以可以直接用self修改自身
  • self == _Tab

Example8

_Tab.ColonFuncWithParam(_Tab,12)

--[[
    ColonFuncWithParam _Tab 
    table: 001F95B8
    ColonFuncWithParam self 
    table: 001F95B8
    ColonFuncWithParam arg 
    12
--]]

Example9

_Tab:ColonFuncWithParam(12)

--[[  
    ColonFuncWithParam _Tab 
    table: 00FF98D8
    ColonFuncWithParam self 
    table: 00FF98D8
    ColonFuncWithParam arg 
    12
--]]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末十籍,一起剝皮案震驚了整個(gè)濱河市攻锰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妓雾,老刑警劉巖娶吞,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異械姻,居然都是意外死亡妒蛇,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門楷拳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绣夺,“玉大人,你說我怎么就攤上這事欢揖√账#” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵她混,是天一觀的道長烈钞。 經(jīng)常有香客問我泊碑,道長,這世上最難降的妖魔是什么毯欣? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任馒过,我火速辦了婚禮,結(jié)果婚禮上酗钞,老公的妹妹穿的比我還像新娘腹忽。我一直安慰自己,他們只是感情好砚作,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布窘奏。 她就那樣靜靜地躺著,像睡著了一般葫录。 火紅的嫁衣襯著肌膚如雪着裹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天压昼,我揣著相機(jī)與錄音求冷,去河邊找鬼瘤运。 笑死窍霞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拯坟。 我是一名探鬼主播但金,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼郁季!你這毒婦竟也來了冷溃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤梦裂,失蹤者是張志新(化名)和其女友劉穎似枕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體年柠,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凿歼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冗恨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片答憔。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掀抹,靈堂內(nèi)的尸體忽然破棺而出虐拓,到底是詐尸還是另有隱情,我是刑警寧澤傲武,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布蓉驹,位于F島的核電站城榛,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏戒幔。R本人自食惡果不足惜吠谢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诗茎。 院中可真熱鬧工坊,春花似錦、人聲如沸敢订。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楚午。三九已至昭齐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間矾柜,已是汗流浹背阱驾。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怪蔑,地道東北人里覆。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像缆瓣,于是被迫代替她去往敵國和親喧枷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,817評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理弓坞,服務(wù)發(fā)現(xiàn)隧甚,斷路器,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,175評論 2 33
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,160評論 30 470
  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True渡冻、False(...
    neo已經(jīng)被使用閱讀 1,689評論 0 5