Lua 學習筆記之四(Lua中的基本函數庫)

2022-06-25 15:38 更新

Lua中的基本函數庫

表1

基本函數庫

功能

參數

備注

assert(v[,mess age])                 

相當于C的斷言

v:當表達式v為nil或false將觸發(fā)錯誤,

message:發(fā)生錯誤時返回的信息,默認為"assertion failed!"

 

collectgarbage (opt [, arg])

是垃圾收集器的通用接口,用于操作垃圾收集器

opt:操作方法標志

"Stop": 停止垃圾收集器

"Restart": 重啟垃圾收集器

"Collect": 執(zhí)行一次全垃圾收集循環(huán)

"Count": 返回當前Lua中使用的內存量(以KB為單位)

"Step": 單步執(zhí)行一個垃圾收集. 步長 "Size" 由參數arg指定 (大型的值需要多步才能完成),如果要準確指定步長,需要多次實驗以達最優(yōu)效果。如果步長完成一次收集循環(huán),將返回True

"Setpause": 設置 arg/100 的值作為暫定收集的時長

"Setstepmul": 設置 arg/100 的值,作為步長的增幅(即新步長=舊步長*arg/100)

 

dofile (filename)

打開并且執(zhí)行一個lua塊,當忽略參數filename時,將執(zhí)行標準輸入設備(stdin)的內容。返回所有塊的返回值。當發(fā)生錯誤時,dofile將錯誤反射給調用者

注:dofile不能在保護模式下運行

 

error (message [, level])

終止正在執(zhí)行的函數,并返回message的內容作為錯誤信息(error函數永遠都不會返回)

通常情況下,error會附加一些錯誤位置的信息到message頭部.

Level參數指示獲得錯誤的位置,

Level=1[默認]:為調用error位置(文件+行號)

Level=2:指出哪個調用error的函數的函數

Level=0:不添加錯誤位置信息

 

_G全局環(huán)境表(全局變量)

記錄全局環(huán)境的變量值的表 _G._G = _G

 

 

getfenv(f)

返回函數f的當前環(huán)境表

f可以為函數或調用棧的級別,級別1[默認]為當前的函數,級別0或其它值將返回全局環(huán)境_G

 

getmetatable(object)

返回指定對象的元表(若object的元表.__metatable項有值,則返回object的元表.__metatable的值),當object沒有元表時將返回nil

 

 

ipairs (t)

 

返回三個值 迭代函數、表、0

多用于窮舉表的鍵名和鍵值對

如:for i,v in ipairs(t) do   end

每次循環(huán)將索引賦級i,鍵值賦給v

注:本函數只能用于以數字索引訪問的表如:t={"1","cash"}

 

load (func [, chunkname])

裝載一個塊中的函數,每次調用func將返回一個連接前一結的字串,在塊結尾處將返回nil

當沒有發(fā)生錯誤時,將返回一個編譯完成的塊作為函數,否則返回nil加上錯誤信息,此函數的環(huán)境為全局環(huán)境

chunkname用于錯誤和調試信息

 

 

loadfile ([filename])

與load類似,但裝載的是文件或當沒有指定filename時裝載標準輸入(stdin)的內容

 

 

loadstring (string [, chunkname])

與load類似,但裝載的內容是一個字串

如:assert(loadstring(s))()

 

 

next (table [, index])

允許程序遍歷表中的每一個字段,返回下一索引和該索引的值。

table:要遍歷的表

index:要返回的索引的前一索中的號,當index為nil[]時,將返回第一個索引的值,當索引號為最后一個索引或表為空時將返回nil

注:可以用next(t)來檢測表是否為空(此函數只能用于以數字索引的表與ipairs相類似)

 

ipairs (t)

返回三個值 next函數、表、0

多用于窮舉表的鍵名和鍵值對

如:for n,v in pairs(t) do end

每次循環(huán)將索引賦級i,鍵值賦給v

注:本函數只能用于以鍵名索引訪問的表如:t={id="1",name="cash"}

 

pcall (f, arg1, ···)

在保護模式下調用函數(即發(fā)生的錯誤將不會反射給調用者)

當調用函數成功能返回true,失敗時將返回false加錯誤信息

 

 

print (···)

簡單的以tostring方式格式化輸出參數的內容

 

 

rawequal (v1, v2)

檢測v1是否等于v2,此函數不會調用任何元表的方法

 

 

rawget (table, index)

獲取表中指定索引的值,此函數不會調用任何元表的方法,成功返回相應的值,當索引不存在時返回nil

注:本函數只能用于以數字索引訪問的表如:t={"1","cash"}

 

rawset (table, index, value)

設置表中指定索引的值,此函數不會調用任何元表的方法,此函數將返回table

 

 

select (index, ···)

當index為數字將返回所有index大于index的參數:如:select(2,"a","b") 返回 "b"

當index為"#",則返回參數的總個數(不包括index)

 

 

setfenv (f, table)

設置函數f的環(huán)境表為table

f可以為函數或調用棧的級別,級別1[默認]為當前的函數,級別0將設置當前線程的環(huán)境表

 

setmetatable (table, metatable)

指定的table設置元表metatable,如果metatable為nil則取消table的元表,當metatable有__metatable字段時,將觸發(fā)錯誤

注:只能為LUA_TTABLE表類型指定元表

 

tonumber (e [, base])

嘗試將參數e轉換為數字,當不能轉換時返回nil

base(2~36)指出參數e當前使用的進制,默認為10進制,如tonumber(11,2)=3

 

tostirng(e)

將參數e轉換為字符串,此函數將會觸發(fā)元表的__tostring事件

 

 

type(v)

返回參數的類型名("nil","number", "string", "boolean", "table", "function", "thread", "userdata")

 

 

unpack (list [, i [, j]])

返回指定表的索引的值,i為起始索引,j為結束索引

注:本函數只能用于以數字索引訪問的表,否則只會返回nil如:t={"1","cash"}

 

_VERSION

返回當前Lua的版本號"Lua 5.1".

 

 

xpcall (f, err)

與pcall類似,在保護模式下調用函數(即發(fā)生的錯誤將不會反射給調用者)

但可指定一個新的錯誤處理函數句柄

當調用函數成功能返回true,失敗時將返回false加err返回的結果

 

 

引用博客:http://www.cnblogs.com/whiteyun/archive/2009/08/12/1543184.html

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號