亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Lua的編譯、執(zhí)行和調試技術介紹

 更新時間:2015年04月23日 10:27:25   投稿:junjie  
這篇文章主要介紹了Lua的編譯、執(zhí)行和調試技術介紹,本文著重講解了對錯誤的處理,另外也講解了編譯和執(zhí)行等知識,需要的朋友可以參考下

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

復制代碼 代碼如下:

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

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

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

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

復制代碼 代碼如下:

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

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

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

復制代碼 代碼如下:

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

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

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

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

復制代碼 代碼如下:

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

其實,我們可以很容易地檢測這個異常,在調用sin之前:
復制代碼 代碼如下:

if not tonumber(x) then
     <error handling>

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

相反的,io.open這個函數(shù),就不存在簡單的在調用open之前就檢測出異常的方法。打開失敗可能是因為文件不存在,或權限不夠。通過返回錯誤碼,你可以采用適當?shù)姆绞絹硖幚恚热缱層脩糨斎肓硪粋€文件名。

相關文章

  • Lua基礎教程之表(Table)學習筆記

    Lua基礎教程之表(Table)學習筆記

    這篇文章主要介紹了Lua基礎教程之表(Table)學習筆記,本文來自個人總結,需要的朋友可以參考下
    2014-09-09
  • Lua多行注釋和取消多行注釋的方法

    Lua多行注釋和取消多行注釋的方法

    這篇文章主要介紹了Lua多行注釋和取消多行注釋的方法,本文分別給出代碼示例,請注意細節(jié)~,需要的朋友可以參考下
    2015-06-06
  • Lua教程(二十一):編寫C函數(shù)的技巧

    Lua教程(二十一):編寫C函數(shù)的技巧

    這篇文章主要介紹了Lua教程(二十一):編寫C函數(shù)的技巧,本文講解了數(shù)組操作、字符串操作、在C函數(shù)中保存狀態(tài)等內容,需要的朋友可以參考下
    2015-04-04
  • 讓你的python代碼更加pythonic(簡練、明確、優(yōu)雅)

    讓你的python代碼更加pythonic(簡練、明確、優(yōu)雅)

    這篇文章主要介紹了讓你的python代碼更加pythonic(簡練、明確、優(yōu)雅),本文講解的是一種讓代碼更加清晰、簡練、明確、優(yōu)雅的書寫方法,需要的朋友可以參考下
    2014-10-10
  • Lua中實現(xiàn)遞歸刪除一個文件夾

    Lua中實現(xiàn)遞歸刪除一個文件夾

    這篇文章主要介紹了Lua中實現(xiàn)遞歸刪除一個文件夾,本文給出了使用C++和使用純LUA兩種方式實現(xiàn),需要的朋友可以參考下
    2015-01-01
  • Lua面向對象之類和繼承

    Lua面向對象之類和繼承

    這篇文章主要介紹了Lua面向對象之類和繼承,本文講解了Lua面向對象最基本的知識類和繼承,需要的朋友可以參考下
    2014-09-09
  • Lua中關于求模與求余的區(qū)別介紹

    Lua中關于求模與求余的區(qū)別介紹

    這篇文章主要介紹了Lua中關于求模與求余的區(qū)別介紹,我覺得很多人搞不清楚這兩個概念的區(qū)別,剛好在翻譯lua手冊時遇到%與math.fmod這兩個操作,順便做一下說明吧,需要的朋友可以參考下
    2015-04-04
  • Lua實現(xiàn)正序和倒序的文件讀取方法

    Lua實現(xiàn)正序和倒序的文件讀取方法

    這篇文章主要介紹了Lua實現(xiàn)正序和倒序的文件讀取方法,本文講解使用table生成鏈表完成正序和倒序的文件讀入功能,需要的朋友可以參考下
    2015-04-04
  • Lua極簡入門指南(一):函數(shù)篇

    Lua極簡入門指南(一):函數(shù)篇

    這篇文章主要介紹了Lua極簡入門指南(一):函數(shù)篇,本文講解了函數(shù)的定義、函數(shù)多值返回、變長參數(shù)、閉包(closures)等內容,需要的朋友可以參考下
    2014-10-10
  • 詳解Lua中的數(shù)組概念知識

    詳解Lua中的數(shù)組概念知識

    這篇文章主要介紹了Lua中的數(shù)組概念知識,是Lua入門學習中的基礎,需要的朋友可以參考下
    2015-05-05

最新評論