最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

dofile讀入文件編譯并執(zhí)行,真正完成功能的函數(shù)是loadfile;與dofile不同,loadfile僅僅是編譯代碼成中間碼,并且把編譯后的chunk作為函數(shù)返回。如果發(fā)生錯誤,返回nil和錯誤信息。我們可以這么定義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相似,只不過他是從一個串中讀入。

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

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

f = loadstring("i=i+1")
與f = function() i = i+1 end等價。但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)境下編譯。

犯錯是人的本性,因此我們必須以最佳的方式來處理錯誤。lua作為擴(kuò)展語言,經(jīng)常嵌入到其他應(yīng)用,當(dāng)錯誤發(fā)生時,不能簡單的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)建了一個函數(shù)來做這工作,這個函數(shù)就是assert。

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

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

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

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

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

if not tonumber(x) then
     <error handling>

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

相反的,io.open這個函數(shù),就不存在簡單的在調(diào)用open之前就檢測出異常的方法。打開失敗可能是因?yàn)槲募淮嬖?,或?quán)限不夠。通過返回錯誤碼,你可以采用適當(dāng)?shù)姆绞絹硖幚?,比如讓用戶輸入另一個文件名。

相關(guān)文章

  • Lua面向?qū)ο笾惡屠^承

    Lua面向?qū)ο笾惡屠^承

    這篇文章主要介紹了Lua面向?qū)ο笾惡屠^承,本文講解了Lua面向?qū)ο笞罨镜闹R類和繼承,需要的朋友可以參考下
    2014-09-09
  • Lua字符串模式匹配函數(shù)小結(jié)

    Lua字符串模式匹配函數(shù)小結(jié)

    這篇文章主要介紹了Lua字符串模式匹配函數(shù)小結(jié),本文涉及一些正則操作,需要的朋友可以參考下
    2014-11-11
  • Lua中的閉包小結(jié)

    Lua中的閉包小結(jié)

    這篇文章主要介紹了Lua中的閉包小結(jié),本文對閉包的概念做了講解,同時給出閉包代碼示例,需要的朋友可以參考下
    2014-09-09
  • Lua中的元方法__newindex詳解

    Lua中的元方法__newindex詳解

    這篇文章主要介紹了Lua中的元方法__newindex詳解,本文講解了查詢與更新、監(jiān)控賦值、通過table給另一個table賦值等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua中關(guān)系運(yùn)算符的使用教程

    Lua中關(guān)系運(yùn)算符的使用教程

    這篇文章主要介紹了Lua中關(guān)系運(yùn)算符的使用教程,是Lua學(xué)習(xí)入門中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-05-05
  • Lua常用時間函數(shù)使用實(shí)例

    Lua常用時間函數(shù)使用實(shí)例

    這篇文章主要介紹了Lua常用時間函數(shù)使用實(shí)例,本文直接給出使用代碼實(shí)例,并附有詳細(xì)注釋,要用到哪個復(fù)制即可,需要的朋友可以參考下
    2015-04-04
  • Lua極簡入門指南(一):基礎(chǔ)知識篇

    Lua極簡入門指南(一):基礎(chǔ)知識篇

    這篇文章主要介紹了Lua極簡入門指南(一):基礎(chǔ)知識篇,本文羅列了Lua的基礎(chǔ)知識,如注釋、數(shù)據(jù)類型、table、循環(huán)控制結(jié)構(gòu)等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua 數(shù)學(xué)庫的所有函數(shù)功能作用一覽

    Lua 數(shù)學(xué)庫的所有函數(shù)功能作用一覽

    這篇文章主要介紹了Lua 數(shù)學(xué)庫的所有函數(shù)功能作用一覽,本文羅列了lua數(shù)學(xué)庫的所有函數(shù),并對每個函數(shù)的功能作用做了簡短描述,需要的朋友可以參考下
    2015-06-06
  • Lua中獲取utf8字符串長度的方法和自定義函數(shù)

    Lua中獲取utf8字符串長度的方法和自定義函數(shù)

    這篇文章主要介紹了Lua中獲取utf8字符串長度的方法和自定義函數(shù),本文給出了代碼實(shí)例并講解了UTF8的編碼規(guī)則,需要的朋友可以參考下
    2015-04-04
  • Lua中pairs與ipairs的區(qū)別總結(jié)

    Lua中pairs與ipairs的區(qū)別總結(jié)

    這篇文章主要給大家介紹了關(guān)于Lua中pairs與ipairs區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09

最新評論

那坡县| 宝山区| 门头沟区| 江安县| 牟定县| 阳高县| 大丰市| 南陵县| 灵石县| 安平县| 门源| 横山县| 会昌县| 康平县| 油尖旺区| 高平市| 宜川县| 谢通门县| 红河县| 仙桃市| 台山市| 嘉定区| 布尔津县| 渝中区| 高青县| 长阳| 龙门县| 连云港市| 伊通| 定安县| 永清县| 竹山县| 泾阳县| 交城县| 松滋市| 白沙| 永春县| 班戈县| 锡林浩特市| 瓮安县| 永定县|