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