Lua中的loadfile、dofile、require詳解
本來(lái)今天不應(yīng)該討論這幾個(gè)函數(shù)的,不過(guò),為了湊字?jǐn)?shù)..不,為了方便以后的文章,還是要談?wù)勥@幾個(gè)基礎(chǔ)函數(shù)的~
1.loadfile——只編譯,不運(yùn)行
loadfile故名思議,它只會(huì)加載文件,編譯代碼,不會(huì)運(yùn)行文件里的代碼。
比如,我們有一個(gè)hellofile.lua文件:
print(“hello”);
function hehe()
print(“hello”);
end
這個(gè)文件里有一句代碼,和一個(gè)函數(shù)。試試用loadfile加載這個(gè)文件,如下代碼:
loadfile("hellofile.lua");
print("end");
輸出結(jié)果如下:
[LUA-print] end
如果說(shuō)loadfile會(huì)執(zhí)行文件里的代碼的話,那么,應(yīng)該會(huì)輸出hello字符串的。
結(jié)果表明,它是不會(huì)執(zhí)行代碼的。
2.dofile——執(zhí)行
很明顯,dofile就是會(huì)執(zhí)行代碼的家伙了,如下代碼:
dofile("E:/Android/wordspace_cocosIDERc0/CocosLuaTest/src/hellofile.lua");
print("end");
輸出結(jié)果如下:
[LUA-print] hello
[LUA-print] end
這里有點(diǎn)尷尬,文件路徑我用了絕對(duì)路徑,因?yàn)閐ofile在Coco Code IDE里使用相對(duì)路徑會(huì)找不到文件(即使使用了addSearchPath)
不過(guò)沒關(guān)系,不影響本文的內(nèi)容。
3.require——我只執(zhí)行一次
require和dofile有點(diǎn)像,不過(guò)又很不一樣,require在第一次加載文件的時(shí)候,會(huì)執(zhí)行里面的代碼。
但是,第二次之后,再次加載文件,則不會(huì)重復(fù)執(zhí)行了。換句話說(shuō),它會(huì)保存已經(jīng)加載過(guò)的文件,不會(huì)重復(fù)加載。
測(cè)試代碼如下:
for i = 1, 2, 1 do
require("hellofile.lua");
end
print("end");
為了說(shuō)明這種情況,我刻意調(diào)用了兩次require,輸出結(jié)果如下:
[LUA-print] hello
[LUA-print] end
和我們說(shuō)的一樣,調(diào)用了兩次,但是代碼只執(zhí)行了一次。
如果這里換成dofile,則會(huì)輸出兩次hello字符串。
4.結(jié)束
我發(fā)現(xiàn)這樣邊看書邊整理文章,進(jìn)度有點(diǎn)慢…真是魚和熊掌的問(wèn)題了。
相關(guān)文章
Linux下編寫Lua擴(kuò)展so文件和調(diào)用方法實(shí)例
這篇文章主要介紹了Linux下編寫Lua擴(kuò)展so文件和調(diào)用方法實(shí)例,本文給出C語(yǔ)言代碼、編譯SO文件、Lua中調(diào)用代碼實(shí)例,需要的朋友可以參考下2015-05-05Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實(shí)例
這篇文章主要介紹了Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實(shí)例,本文給出了加法、減法、乘法、除法、相反數(shù)、取模等內(nèi)容,需要的朋友可以參考下2014-09-09Lua進(jìn)階教程之閉包函數(shù)、元表實(shí)例介紹
這篇文章主要介紹了Lua進(jìn)階教程之閉包函數(shù)、元表實(shí)例介紹,本文詳細(xì)講解了Lua的閉包函數(shù)和元表,并同時(shí)和C++做了比較,需要的朋友可以參考下2014-09-09解析Lua中的全局環(huán)境、包、模塊組織結(jié)構(gòu)
Lua中也擁有和Python世界相似的代碼的作用范圍和組織方式,下面我們就來(lái)簡(jiǎn)單解析Lua中的全局環(huán)境、包、模塊組織結(jié)構(gòu),需要的朋友可以參考下2016-06-06Lua中使用table.concat連接大量字符串實(shí)例
這篇文章主要介紹了Lua中使用table.concat連接大量字符串實(shí)例,本文是Lua處理大量字符串的一個(gè)測(cè)試文章,測(cè)試了2種方法處理大量字符串的消耗時(shí)間,需要的朋友可以參考下2014-09-09Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)
這篇文章主要介紹了在Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)的方法,需要的朋友可以參考下2014-11-11