Lua熱更

參考:
https://blog.csdn.net/cooclc/article/details/104825564

lua加載一個(gè)文件的方式可以有:dofile绸罗,loadfile以及 require。其中l(wèi)oadfile是只編譯不執(zhí)行啊犬,dofile和require是同時(shí)編譯和執(zhí)行剖效。而dofile和require的區(qū)別是dofile同一個(gè)文件每次都要加載嫉入,也就是說,dofile兩次返回來的是兩個(gè)不同的地址璧尸。而require同一個(gè)文件咒林,不管多少次都是都返回同一個(gè)地址,其原因是lua的地址緩存在了package.load()中爷光。所以效率比dofile要高許多垫竞,因而現(xiàn)在一般都是用require加載文件。

Lua熱更新的兩種實(shí)現(xiàn)方式

1. 簡(jiǎn)單版但是有缺陷

package.load("modelname") = nil
 
-- 修改modelname.lua的數(shù)據(jù)
 
require("modelname")

既然你有緩存瞎颗,我直接置為空不就好了嗎件甥?然后重新require一次把修改好的加進(jìn)來。這樣子做的話第二次require的數(shù)據(jù)可能是正確的哼拔,但是之前require過一次的數(shù)值卻仍然錯(cuò)誤引有,所以說程序除非在之前沒有加載過這個(gè)文件,否則得到的結(jié)果不完善倦逐。

2. 復(fù)雜版但是很有用

function reload_module(module_name)
    local old_module = package.loaded[module_name] or {}
    package.loaded[module_name] = nil
    require (module_name)
 
    local new_module = package.loaded[module_name]
    for k, v in pairs(new_module) do
        old_module[k] = v
    end
    --執(zhí)行到這里應(yīng)該已經(jīng)可以了
 
    package.loaded[module_name] = old_module
    return old_module
end

使用一個(gè)表存儲(chǔ)新修改后的所有數(shù)值譬正,然后循環(huán)賦值給舊的值,這樣就可以確保同一個(gè)舊地址也可以得到正確的數(shù)據(jù)檬姥。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末曾我,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子健民,更是在濱河造成了極大的恐慌抒巢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秉犹,死亡現(xiàn)場(chǎng)離奇詭異蛉谜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)崇堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門型诚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸳劳,你說我怎么就攤上這事狰贯。” “怎么了赏廓?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵涵紊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我幔摸,道長(zhǎng)栖袋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任抚太,我火速辦了婚禮塘幅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尿贫。我一直安慰自己电媳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布庆亡。 她就那樣靜靜地躺著匾乓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪又谋。 梳的紋絲不亂的頭發(fā)上拼缝,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天娱局,我揣著相機(jī)與錄音,去河邊找鬼咧七。 笑死衰齐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的继阻。 我是一名探鬼主播耻涛,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼瘟檩!你這毒婦竟也來了抹缕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤墨辛,失蹤者是張志新(化名)和其女友劉穎卓研,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睹簇,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鉴分,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了带膀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片志珍。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖垛叨,靈堂內(nèi)的尸體忽然破棺而出伦糯,到底是詐尸還是另有隱情,我是刑警寧澤嗽元,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布敛纲,位于F島的核電站,受9級(jí)特大地震影響剂癌,放射性物質(zhì)發(fā)生泄漏淤翔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一佩谷、第九天 我趴在偏房一處隱蔽的房頂上張望旁壮。 院中可真熱鬧,春花似錦谐檀、人聲如沸抡谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)麦撵。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間免胃,已是汗流浹背音五。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羔沙,地道東北人躺涝。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撬碟,于是被迫代替她去往敵國(guó)和親诞挨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子莉撇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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