1. 程式人生 > >lua檔案的載入和解除安裝~package.loaded和require配合讓一個檔案更新後重新載入

lua檔案的載入和解除安裝~package.loaded和require配合讓一個檔案更新後重新載入

用require函式只能載入一次,因為它的特性是:

1、require函式會搜尋目錄載入檔案

2、require會判斷是否檔案已經載入避免重複載入同一檔案

而這個特性二,雖然我們可能知道這兩個特性,但是潛意識裡面常常把這個特性二給忽視掉了.

直到哪天我們需要反覆載入同一個lua檔案,但是沒有實現自己想要效果的時候,才會發現這個特性二的存在感特別強!

也許有的小夥伴,會有疑問,為什麼要反覆載入啊?載入一次不就能用了麼?

當我有一些特殊的需求的時候,就可能會需要反覆載入某個lua檔案,例如我的檔案lua檔案動態地改變了,或者一些其他特殊原因.

那麼,如何實現反覆載入一個lua檔案?

答案是:二次載入前加這一句package.loaded[luafile] = nil就ok了

例如我們需要反覆地required(‘test.lua’),那麼第二次載入時的程式碼如下:

package.loaded[‘test.lua’] = nil

required(‘test.lua’)

參考資料:

http://baike.baidu.com/view/8751804.htm?fr=aladdin 關於required函式的特性

http://www.cnblogs.com/Wilson-Loo/p/3301989.html   Lua 指令碼重啟 機制

http://7301766.blog.163.com/blog/static/144633559201101904135456/    LUA modue require package 區別