Lua 標(biāo)準(zhǔn)庫利用 C 語言 API 實現(xiàn)并提供了豐富的函數(shù),它們內(nèi)置于 Lua 語言中。該標(biāo)準(zhǔn)庫不僅可以提供 Lua 語言內(nèi)服務(wù),還能提供外部服務(wù),比如文件或數(shù)據(jù)庫的操作。
這些標(biāo)準(zhǔn)庫使用標(biāo)準(zhǔn)的 C API 接口實現(xiàn),它們作為獨立的 C 語言模塊提供給使用者。主要包括以下的內(nèi)容:
在本教程中,我們已經(jīng)在很多地方都使用了基本庫的內(nèi)容。下面的表中列出了相關(guān)的函數(shù)與鏈接。
| S.N. | 庫或者方法 |
|---|---|
| 1 | 錯誤處理庫,包括錯誤處理函數(shù),比如 assert,error等,詳見錯誤處理。 |
| 2 | 內(nèi)存管理,包括與垃圾回收相關(guān)的自動內(nèi)存管理的內(nèi)容,詳見垃圾回收。 |
| 3 | dofile([filename]),打開指定文件,并將文件內(nèi)容作為代碼執(zhí)行。如果沒有傳入?yún)?shù),則函數(shù)執(zhí)行標(biāo)準(zhǔn)輸入的內(nèi)容。錯誤會傳遞至函數(shù)調(diào)用者。 |
| 4 | _G,全局變量,它存儲全局的環(huán)境。Lua 本身不使用此變量。 |
| 5 | getfenv([f]),返回指定函數(shù)使用的當(dāng)前環(huán)境(作用域),可以通過函數(shù)名或棧深度值指定函數(shù)。 1 表示調(diào)用 getfenv 的函數(shù)。如果傳入的參數(shù)不是函數(shù)或者 f 為 0,則返回全局環(huán)境。f 的默認(rèn)值為 1。 |
| 6 | getmetatable(object):如果對象沒有元表,則返回 nil。如果對象的元表有 __metable 域,則返回該值;否則返回對象的元表。 |
| 7 | ipairs(t),用于遍歷表,此函數(shù)返回三個值:next 函數(shù),表 t, 以及 0。 |
| 8 | load(func[,chunkname]),使用函數(shù) func 加載一個塊(代碼塊),每次調(diào)用func必須返回與先前的結(jié)果連接后的字符串 |
| 9 | loadfile([filename]),與 load 函數(shù)相似,此函數(shù)從文件中或標(biāo)準(zhǔn)輸入(沒指定文件名時)讀入代碼塊。 |
| 10 | loadstring(string,[,chunkname]),與 load 類似,從指定字符串中獲得代碼塊。 |
| 11 | next(table[,index]),此函數(shù)用于遍歷表結(jié)構(gòu)。第一參數(shù)為表,第二個參數(shù)是一個索引值。返回值為指定索引的下一個索引與相關(guān)的值。 |
| 12 | pairs(t),用于遍歷表,此函數(shù)返回三個值:next 函數(shù),表 t, 以及 nil。 |
| 13 | print(...),打印輸出傳入?yún)?shù)。 |
| 14 | rawequal(v1,v2),判斷 v1 與 v2 是否相等,不會調(diào)用任何元方法。返回布爾值。 |
| 15 | rawget(table,index),返回 table[index],不會調(diào)用元方法。table 必須是表,索引可以是任何值。 |
| 16 | rawset(table,index,value),等價于 table[index] = value,但是不會調(diào)用元方法。函數(shù)返回表。 |
| 17 | select(index,...),如果 index 為數(shù)字n,那么 select 返回它的第 n 個可變實參,否則只能為字符串 "#",這樣select會返回變長參數(shù)的總數(shù)。 |
| 18 | setfenv(f,table),設(shè)置指定函數(shù)的作用域??梢酝ㄟ^函數(shù)名或棧深度值指定函數(shù)。 1 表示調(diào)用 setfenv 的函數(shù)。返回值為指定函數(shù)。特別地,如果 f 為 0,則改變當(dāng)前線程的運行環(huán)境,這時候函數(shù)無返回值。 |
| 19 | setmetatable(table,metatable),設(shè)置指定表的元表(不能從 Lua 中改變其它類型的元表,其它類型的元表只能從 C 語言中修改)。如果 metatable 為 nil,則刪除表的元表;如果原來的元表有 __metatable 域,則出錯。函數(shù)返回 table。 |
| 20 | tonumber(e[,base]),將參數(shù)轉(zhuǎn)換為數(shù)值。如果參數(shù)本身已經(jīng)是數(shù)值或者是可以轉(zhuǎn)換為數(shù)值的字符串,則 tonumber 返回數(shù)值,否則返回 nil。 |
| 21 | tostring(e),將傳遞的實參以合理的格式轉(zhuǎn)換為字符串。精確控制字符串的轉(zhuǎn)換可以使用 string.format 函數(shù)。 |
| 22 | type(v),以字符串的形式返回輸入?yún)?shù)的類型。該函數(shù)的返回值可以取字符串:nil,number,string,boolean,table,function,thread,userdata。 |
| 23 | unpack(list[,i[,j]]),從指定的表中返回元素。 |
| 24 | _VERSION,存儲當(dāng)前解釋器版本信息的全局變量。該變量當(dāng)前存儲的內(nèi)容為:Lua 5.1。(譯注:與解釋器版本有關(guān)) |
| 25 | 協(xié)程庫,包括協(xié)程相關(guān)的函數(shù),詳見協(xié)程 |
模塊庫提供了加載模塊的基本函數(shù)。它在全局作用域內(nèi)提供了 require 函數(shù)。其它的函數(shù)都是通過包管理的模塊庫提供的。詳細(xì)內(nèi)容請參見模塊。
詳細(xì)內(nèi)容請參見字符串。
詳細(xì)內(nèi)容請參見表。
詳細(xì)內(nèi)容請參見數(shù)學(xué)函數(shù)庫。
詳細(xì)內(nèi)容請參見文件 IO。
詳細(xì)內(nèi)容請參見操作系統(tǒng)工具庫。
詳細(xì)內(nèi)容請參見調(diào)試。