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