校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹

Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹

熱門標(biāo)簽:地圖標(biāo)注大廈 怎么去除地圖標(biāo)注 新岸線智能電銷機(jī)器人 清朝地圖標(biāo)注哈爾濱 百度地圖標(biāo)注早餐區(qū)域 漳州智云呼電話機(jī)器人 個(gè)人怎么在地圖標(biāo)注需要的店鋪 武漢外呼防封系統(tǒng)多少錢 冀州市地圖標(biāo)注

dofile讀入文件編譯并執(zhí)行,真正完成功能的函數(shù)是loadfile;與dofile不同,loadfile僅僅是編譯代碼成中間碼,并且把編譯后的chunk作為函數(shù)返回。如果發(fā)生錯(cuò)誤,返回nil和錯(cuò)誤信息。我們可以這么定義dofile:

復(fù)制代碼 代碼如下:

function dofile(filename)
     local f = assert(loadfile(filename))
     return f()
end

如果你只調(diào)用一次,可以使用dofile(filename),如果是調(diào)用多次,可以f = loadfile(filename); f();f()...

loadstring與loadfile相似,只不過他是從一個(gè)串中讀入。

lua中函數(shù)定義發(fā)生在運(yùn)行時(shí)而不是編譯時(shí)。

復(fù)制代碼 代碼如下:

f = loadstring("i=i+1")
與f = function() i = i+1 end等價(jià)。但loadstring不關(guān)心詞法范圍:
i = 33
local i = 0;
f = loadstring("i=i+1")
g = function() i = i+1 end

g使用的是局部變量i,而f使用的是全局變量i,因?yàn)閒總是在全局環(huán)境下編譯。

犯錯(cuò)是人的本性,因此我們必須以最佳的方式來處理錯(cuò)誤。lua作為擴(kuò)展語言,經(jīng)常嵌入到其他應(yīng)用,當(dāng)錯(cuò)誤發(fā)生時(shí),不能簡單的crash或exit。

復(fù)制代碼 代碼如下:

print "enter a number:"
n = io.read("*number")
if not n then error("invalid input") end

if not condition then error end 的組合太普遍了以至于lua專門內(nèi)建了一個(gè)函數(shù)來做這工作,這個(gè)函數(shù)就是assert。

通常,當(dāng)異常發(fā)生時(shí),你有兩個(gè)方式處理,要么返回錯(cuò)誤碼(nil),要么報(bào)錯(cuò)(error)。對于這兩種方式,并沒有固定的準(zhǔn)則來做選擇。但是我們提供通用的原則:容易避免的異常應(yīng)該報(bào)錯(cuò),否則返回異常。舉例說明:

math.sin接受個(gè)number型的弧度值,如果參數(shù)不是number,我們應(yīng)該報(bào)錯(cuò),而不是返回錯(cuò)誤碼。假設(shè)我們是返回錯(cuò)誤碼,那么我們使用就得這樣:

復(fù)制代碼 代碼如下:

local res = math.sin(x)
if not res then
     error handling>

其實(shí),我們可以很容易地檢測這個(gè)異常,在調(diào)用sin之前:
復(fù)制代碼 代碼如下:

if not tonumber(x) then
     error handling>

通常,我們是既不檢測sin的參數(shù),也不檢測sin的返回值。如果參數(shù)不是number,往往是我們代碼自身出問題了。這種情況下,停止執(zhí)行并報(bào)錯(cuò)是最簡單也是最實(shí)用的方式。

相反的,io.open這個(gè)函數(shù),就不存在簡單的在調(diào)用open之前就檢測出異常的方法。打開失敗可能是因?yàn)槲募淮嬖冢驒?quán)限不夠。通過返回錯(cuò)誤碼,你可以采用適當(dāng)?shù)姆绞絹硖幚恚热缱層脩糨斎肓硪粋€(gè)文件名。

標(biāo)簽:儋州 天門 濰坊 德宏 臺灣 天門 金昌 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹》,本文關(guān)鍵詞  Lua,的,編譯,執(zhí)行,和,調(diào)試,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 柳江县| 玛纳斯县| 江安县| 应用必备| 乐昌市| 龙井市| 集安市| 东乌珠穆沁旗| 柯坪县| 南陵县| 特克斯县| 石棉县| 曲靖市| 土默特左旗| 东阳市| 古田县| 启东市| 托克托县| 调兵山市| 镇远县| 绥滨县| 贵阳市| 绵竹市| 普兰店市| 大石桥市| 宜黄县| 光山县| 普兰县| 崇文区| 乌恰县| 山西省| 晋中市| 老河口市| 玉门市| 育儿| 陆丰市| 九台市| 汕尾市| 扶绥县| 泰兴市| 慈溪市|