dofile讀入文件編譯并執(zhí)行,真正完成功能的函數(shù)是loadfile;與dofile不同,loadfile僅僅是編譯代碼成中間碼,并且把編譯后的chunk作為函數(shù)返回。如果發(fā)生錯(cuò)誤,返回nil和錯(cuò)誤信息。我們可以這么定義dofile:
如果你只調(diào)用一次,可以使用dofile(filename),如果是調(diào)用多次,可以f = loadfile(filename); f();f()...
loadstring與loadfile相似,只不過(guò)他是從一個(gè)串中讀入。
lua中函數(shù)定義發(fā)生在運(yùn)行時(shí)而不是編譯時(shí)。
犯錯(cuò)是人的本性,因此我們必須以最佳的方式來(lái)處理錯(cuò)誤。lua作為擴(kuò)展語(yǔ)言,經(jīng)常嵌入到其他應(yīng)用,當(dāng)錯(cuò)誤發(fā)生時(shí),不能簡(jiǎn)單的crash或exit。
通常,當(dāng)異常發(fā)生時(shí),你有兩個(gè)方式處理,要么返回錯(cuò)誤碼(nil),要么報(bào)錯(cuò)(error)。對(duì)于這兩種方式,并沒(méi)有固定的準(zhǔn)則來(lái)做選擇。但是我們提供通用的原則:容易避免的異常應(yīng)該報(bào)錯(cuò),否則返回異常。舉例說(shuō)明:
math.sin接受個(gè)number型的弧度值,如果參數(shù)不是number,我們應(yīng)該報(bào)錯(cuò),而不是返回錯(cuò)誤碼。假設(shè)我們是返回錯(cuò)誤碼,那么我們使用就得這樣:
相反的,io.open這個(gè)函數(shù),就不存在簡(jiǎn)單的在調(diào)用open之前就檢測(cè)出異常的方法。打開(kāi)失敗可能是因?yàn)槲募淮嬖?,或?quán)限不夠。通過(guò)返回錯(cuò)誤碼,你可以采用適當(dāng)?shù)姆绞絹?lái)處理,比如讓用戶(hù)輸入另一個(gè)文件名。
標(biāo)簽:儋州 天門(mén) 濰坊 德宏 臺(tái)灣 天門(mén) 金昌 宣城
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹》,本文關(guān)鍵詞 Lua,的,編譯,執(zhí)行,和,調(diào)試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。