麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Lua中編譯執行代碼相關的函數詳解

2024-07-21 23:04:27
字體:
來源:轉載
供稿:網友

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

load函數

   load函數原型如下:

 

復制代碼 代碼如下:

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

 

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

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

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

    Lua不會檢測二進制數據的穩定性,因此惡意的二進制數據可能導致Lua解釋器Crash。

loadfile函數

    函數原型如下:

 

復制代碼 代碼如下:

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

 

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

 

復制代碼 代碼如下:

dofile ([filename]) 

 

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

loadstring函數

    函數原型如下:

 

復制代碼 代碼如下:

loadstring (string [, chunkname]) 

 

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

 

復制代碼 代碼如下:

assert(loadstring(s))() 

 

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品国产日韩91久久久久久360 | 久久久一区二区三区四区 | av电影免费在线 | 青草久久网 | 国产一级一片免费播放 | 九九热精品视频在线 | 久久精品中文字幕一区二区 | 亚洲成人第一区 | 国产小视频一区 | 国产精品视频自拍 | 欧美一级特黄aaaaaaa什 | 国产喷白浆10p | 国产精品成人亚洲一区二区 | 亚洲一级电影在线观看 | 超级av在线 | 黄色一级电影网 | 孕妇体内谢精满日本电影 | 极品美女一级毛片 | 国产精品av久久久久久网址 | 日日摸夜夜骑 | 国产精品视频六区 | 久久成人免费网 | 国产一区二区二 | 国产啊v在线观看 | 欧美中文字幕一区二区 | 久久草草影视免费网 | 国产91亚洲精品一区二区三区 | 性盈盈盈影院 | 久久久久av69精品 | av成人免费在线观看 | 一级做a爱片毛片免费 | 久在线观看福利视频69 | 成人毛片av在线 | 午夜伦情电午夜伦情电影 | 国产电影av在线 | 日韩激情在线视频 | 在线99热 | 成年人黄色免费网站 | 斗破苍穹在线免费 | 宅男视频在线观看免费 | 国产精品午夜一区 |