婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

可以說Lua之所以稱為是一種解釋型的語言,正是因?yàn)橛兄T如load這樣的函數(shù),因?yàn)檫@樣的函數(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的值是文本或二進(jìn)制數(shù)據(jù)。如果是”b”,則傳給chunk的值必須是二進(jìn)制數(shù)據(jù)(比如可以使用string.dump(foo)得到相應(yīng)函數(shù)的二進(jìn)制數(shù)據(jù),然后傳遞給load),如果是”t”,而必須是文本數(shù)據(jù),如果是”bt”,則文件或二進(jìn)制數(shù)據(jù)都可以。默認(rèn)值是”bt”。

    Lua不會檢測二進(jìn)制數(shù)據(jù)的穩(wěn)定性,因此惡意的二進(jì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在無保護(hù)模式下執(zhí)行。注意該函數(shù)不同于loadfile,loadfile只是返回一個函數(shù),并不會執(zhí)行,并且出現(xiàn)錯誤時,loadfile會返回一個錯誤信息,而不會傳遞給它的調(diào)用者。總之、loadfile會從一個文件中加載Lua代碼塊,但不會運(yùn)行代碼,只是編譯代碼,然后將編譯結(jié)果從一個函數(shù)返回。而dofile除了編譯代碼外,還會運(yùn)行返回的結(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ù)。為了加載和運(yùn)行一個字符串,可以這些寫:

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

assert(loadstring(s))() 

注意該函數(shù)在Lua5.2被刪除了,因?yàn)樗耆杀籰oad替代。

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

您可能感興趣的文章:
  • Lua中使用元表(metatable)執(zhí)行算術(shù)類元方法實(shí)例
  • Lua中的源代碼預(yù)編譯淺析
  • Lua簡介、編譯安裝教程及變量等語法介紹
  • Mac平臺中編譯安裝Lua運(yùn)行環(huán)境及Hello Lua實(shí)例

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解》,本文關(guān)鍵詞  Lua,中,編譯,執(zhí)行,代碼,相關(guān),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua中編譯執(zhí)行代碼相關(guān)的函數(shù)詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 浦县| 静海县| 治县。| 新干县| 台南市| 霍州市| 砀山县| 台江县| 湄潭县| 夏河县| 牟定县| 巧家县| 年辖:市辖区| 兴城市| 准格尔旗| 伊金霍洛旗| 察隅县| 平陆县| 衡阳市| 万州区| 遵化市| 安国市| 胶州市| 合水县| 台湾省| 永清县| 天柱县| 汾阳市| 仙居县| 彭州市| 怀仁县| 金寨县| 尼玛县| 佛教| 英德市| 宁远县| 定结县| 长兴县| 威宁| 永泰县| 阿勒泰市|