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

Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解

 更新時間:2015年04月10日 10:30:10   投稿:hebedich  
這篇文章主要介紹了Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下

可以說Lua之所以稱為是一種解釋型的語言,正是因為有諸如load這樣的函數(shù),因為這樣的函數(shù)使得Lua可以執(zhí)行動態(tài)生成的代碼。下面具體來分析這些函數(shù)。

load函數(shù)

   load函數(shù)原型如下:

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

load (chunk [, chunkname [, mode [, env]]]) 

 該函數(shù)加載一個chunk,如果沒有錯誤,則返回一個函數(shù)。如果傳入chunk的值是一個字符串,則就加載這個字符串;如果傳入chunk的值是一個函數(shù),則這個函數(shù)必須返回一個字符串,并且load會一直調(diào)用這個函數(shù),直到這個函數(shù)返回空字符串或nil,load會把每次函數(shù)的返回結(jié)果連接起來作為chunk去加載。

如果沒有語法錯誤,則load返回chunk對于的函數(shù),否則返回nil和對應(yīng)的錯誤信息。如果返回的函數(shù)有upvalue,則第一個upvalue的值被設(shè)置成傳入的參數(shù)env,若沒有傳入這個參數(shù)的值,則第一個upvalue的值為全局環(huán)境。返回的函數(shù)upvalue不會任何其他函數(shù)共享。

    參數(shù)chunkname作為錯誤信息的chunk的名字,用于調(diào)試。若chunk是字符串,則chunkname默認(rèn)值是變量chunk的值,否則是=(load)。參數(shù)mode決定了傳入給chunk的值是文本或二進制數(shù)據(jù)。如果是”b”,則傳給chunk的值必須是二進制數(shù)據(jù)(比如可以使用string.dump(foo)得到相應(yīng)函數(shù)的二進制數(shù)據(jù),然后傳遞給load),如果是”t”,而必須是文本數(shù)據(jù),如果是”bt”,則文件或二進制數(shù)據(jù)都可以。默認(rèn)值是”bt”。

    Lua不會檢測二進制數(shù)據(jù)的穩(wěn)定性,因此惡意的二進制數(shù)據(jù)可能導(dǎo)致Lua解釋器Crash。

loadfile函數(shù)

    函數(shù)原型如下:

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

loadfile ([filename [, mode [, env]]]) 

 該函數(shù)類似于load,但是從文件filename或標(biāo)準(zhǔn)輸入(若filename為空)中活動chunk加載。
dofile函數(shù)
    函數(shù)原型如下:

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

dofile ([filename]) 

 讀取文件filename的內(nèi)容,并把它作為lua的chunk執(zhí)行。如果沒傳入?yún)?shù),則從標(biāo)準(zhǔn)輸入中讀取執(zhí)行內(nèi)容。返回值跟chunk執(zhí)行后返回的值相同。如果出現(xiàn)錯誤,dofile會把錯誤信息傳遞給它的調(diào)用者。也就是說,dofile在無保護模式下執(zhí)行。注意該函數(shù)不同于loadfile,loadfile只是返回一個函數(shù),并不會執(zhí)行,并且出現(xiàn)錯誤時,loadfile會返回一個錯誤信息,而不會傳遞給它的調(diào)用者??傊oadfile會從一個文件中加載Lua代碼塊,但不會運行代碼,只是編譯代碼,然后將編譯結(jié)果從一個函數(shù)返回。而dofile除了編譯代碼外,還會運行返回的結(jié)果。
    上面討論的Lua層面的編譯執(zhí)行相關(guān)的函數(shù),對應(yīng)的C API相關(guān)函數(shù)有:lua_load、luaL_loadfilex、luaL_loadfile和luaL_dofile,這些函數(shù)非常類似對應(yīng)的Lua層函數(shù)。

loadstring函數(shù)

    函數(shù)原型如下:

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

loadstring (string [, chunkname]) 

  該函數(shù)通用類似于load,它等價于給load函數(shù)傳遞字符串做作為參數(shù)。為了加載和運行一個字符串,可以這些寫:

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

assert(loadstring(s))() 

注意該函數(shù)在Lua5.2被刪除了,因為它完全可被load替代。

以上所述就是本文的全部內(nèi)容了,希望對大家熟練掌握lua能夠有所幫助。

相關(guān)文章

  • Lua調(diào)用自定義C模塊

    Lua調(diào)用自定義C模塊

    Lua可以調(diào)用C函數(shù)的能力將極大的提高Lua的可擴展性和可用性。對于有些和操作系統(tǒng)相關(guān)的功能,或者是對效率要求較高的模塊,我們完全可以通過C函數(shù)來實現(xiàn),之后再通過Lua調(diào)用指定的C函數(shù)。對于那些可被Lua調(diào)用的C函數(shù)而言,其接口必須遵循Lua要求的形式
    2015-09-09
  • Lua中使用table.concat連接大量字符串實例

    Lua中使用table.concat連接大量字符串實例

    這篇文章主要介紹了Lua中使用table.concat連接大量字符串實例,本文是Lua處理大量字符串的一個測試文章,測試了2種方法處理大量字符串的消耗時間,需要的朋友可以參考下
    2014-09-09
  • Lua中table的遍歷詳解

    Lua中table的遍歷詳解

    這篇文章主要介紹了Lua中table的遍歷詳解,本文講解了4種遍歷方法,并詳細(xì)分析了這4種方法的特點、使用環(huán)境、相關(guān)知識等,需要的朋友可以參考下
    2015-04-04
  • Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實例

    Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實例

    這篇文章主要介紹了Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實例,本文給出了加法、減法、乘法、除法、相反數(shù)、取模等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡例

    Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡例

    今天小編就為大家分享一篇關(guān)于Lua面向?qū)ο缶幊讨A(chǔ)結(jié)構(gòu)table簡例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Lua table的concat方法使用實例

    Lua table的concat方法使用實例

    這篇文章主要介紹了Lua table的concat方法使用實例,本文講解了concat方法的用法及使用實例,需要的朋友可以參考下
    2015-04-04
  • Lua返回一個Closures函數(shù)實例

    Lua返回一個Closures函數(shù)實例

    這篇文章主要介紹了Lua返回一個Closures函數(shù)實例,本文直接給出代碼實例,需要的朋友可以參考下
    2015-04-04
  • Lua獲取utf8字符串長度和字符串截取并用...代替

    Lua獲取utf8字符串長度和字符串截取并用...代替

    這篇文章主要介紹了Lua獲取utf8字符串長度和字符串截取并用...代替,本文直接給出兩個函數(shù)的實現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • 讓你的python代碼更加pythonic(簡練、明確、優(yōu)雅)

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

    這篇文章主要介紹了讓你的python代碼更加pythonic(簡練、明確、優(yōu)雅),本文講解的是一種讓代碼更加清晰、簡練、明確、優(yōu)雅的書寫方法,需要的朋友可以參考下
    2014-10-10
  • Linux下編寫Lua擴展so文件和調(diào)用方法實例

    Linux下編寫Lua擴展so文件和調(diào)用方法實例

    這篇文章主要介紹了Linux下編寫Lua擴展so文件和調(diào)用方法實例,本文給出C語言代碼、編譯SO文件、Lua中調(diào)用代碼實例,需要的朋友可以參考下
    2015-05-05

最新評論

榆社县| 阆中市| 湖州市| 诏安县| 滨海县| 灌阳县| 陕西省| 凤山市| 四川省| 合水县| 阿瓦提县| 正定县| 临沧市| 安多县| 麻城市| 清丰县| 龙海市| 八宿县| 台州市| 永善县| 当阳市| 松原市| 太康县| 长春市| 绥宁县| 沙雅县| 抚顺市| 菏泽市| 成安县| 保靖县| 张家口市| 怀集县| 晋州市| 崇明县| 南江县| 托克逊县| 浮梁县| 奉新县| 黄山市| 佛坪县| 交城县|