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

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

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

可以說(shuō)Lua之所以稱為是一種解釋型的語(yǔ)言,正是因?yàn)橛兄T如load這樣的函數(shù),因?yàn)檫@樣的函數(shù)使得Lua可以執(zhí)行動(dòng)態(tài)生成的代碼。下面具體來(lái)分析這些函數(shù)。

load函數(shù)

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

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

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

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

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

    參數(shù)chunkname作為錯(cuò)誤信息的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不會(huì)檢測(cè)二進(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為空)中活動(dòng)chunk加載。
dofile函數(shù)
    函數(shù)原型如下:

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

dofile ([filename]) 

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

loadstring函數(shù)

    函數(shù)原型如下:

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

loadstring (string [, chunkname]) 

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

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

assert(loadstring(s))() 

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

以上所述就是本文的全部?jī)?nèi)容了,希望對(duì)大家熟練掌握l(shuí)ua能夠有所幫助。

相關(guān)文章

  • Lua中的模塊(module)和包(package)詳解

    Lua中的模塊(module)和包(package)詳解

    這篇文章主要介紹了Lua中的模塊(module)和包(package)詳解,本文講解了require函數(shù)、寫一個(gè)模塊、package.loaded、module函數(shù)等內(nèi)容,需要的朋友可以參考下
    2014-09-09
  • Cocos2d-x中調(diào)用Lua及HelloWorld.lua源碼分解

    Cocos2d-x中調(diào)用Lua及HelloWorld.lua源碼分解

    這篇文章主要介紹了Cocos2d-x中調(diào)用Lua及HelloWorld.lua源碼分解,本文最后總結(jié)了一些Lua的語(yǔ)法,需要的朋友可以參考下
    2014-09-09
  • C語(yǔ)言中調(diào)用Lua函數(shù)實(shí)例

    C語(yǔ)言中調(diào)用Lua函數(shù)實(shí)例

    這篇文章主要介紹了C語(yǔ)言中調(diào)用Lua函數(shù)實(shí)例,本文講解了調(diào)用一個(gè)Lua函數(shù)的步驟和C語(yǔ)言調(diào)用Lua函數(shù)實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua中使用二維數(shù)組實(shí)例

    Lua中使用二維數(shù)組實(shí)例

    這篇文章主要介紹了Lua中使用二維數(shù)組實(shí)例,本文直接給出代碼實(shí)例,看代碼更容易理解,需要的朋友可以參考下
    2015-06-06
  • Lua實(shí)現(xiàn)類繼承

    Lua實(shí)現(xiàn)類繼承

    這里給大家演示的是一個(gè)使用lua實(shí)現(xiàn)類繼承的示例,實(shí)現(xiàn)類繼承其實(shí)有很多種寫法,這里是本人常用的方法,推薦給大家。
    2015-03-03
  • Lua調(diào)用自定義C模塊

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

    Lua可以調(diào)用C函數(shù)的能力將極大的提高Lua的可擴(kuò)展性和可用性。對(duì)于有些和操作系統(tǒng)相關(guān)的功能,或者是對(duì)效率要求較高的模塊,我們完全可以通過(guò)C函數(shù)來(lái)實(shí)現(xiàn),之后再通過(guò)Lua調(diào)用指定的C函數(shù)。對(duì)于那些可被Lua調(diào)用的C函數(shù)而言,其接口必須遵循Lua要求的形式
    2015-09-09
  • Lua中的元表和元方法學(xué)習(xí)筆記

    Lua中的元表和元方法學(xué)習(xí)筆記

    這篇文章主要介紹了Lua中的元表和元方法學(xué)習(xí)筆記,本文主要講解了getmetatable獲取元表、setmetatable修改元表等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • Lua中string.lower()使用指南

    Lua中string.lower()使用指南

    這篇文章主要介紹了Lua中操作字符串的基本方法整理,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-08-08
  • phpredis執(zhí)行LUA腳本示例代碼

    phpredis執(zhí)行LUA腳本示例代碼

    這篇文章主要給大家介紹了關(guān)于phpredis執(zhí)行LUA腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • lua腳本語(yǔ)言快速入門教程

    lua腳本語(yǔ)言快速入門教程

    這篇文章主要介紹了lua腳本語(yǔ)言快速入門教程,本文講解了變量及常量、字符串、邏輯控制語(yǔ)句、循環(huán)結(jié)構(gòu)、函數(shù)及其使用等內(nèi)容,需要的朋友可以參考下
    2015-03-03

最新評(píng)論