Lua中base库里面的接口都是全局可见的,我在 全局环境 一篇里面已经谈到了。在lua5.2中base库增加了2个全局变量和23个函数,这些都可以在lbaselib.c里面找到。

首先增加了两个变量:

_G = 当前lua中的全局环境

_VERSION = LUA_VERSION

其中LUA_VERSION是一个宏,在每个版本的Lua中都不一样,定义在lua.h中

p_w_picpath

可以看到如果我用 print(_VERSION) 打印出来,那么显示的应该是Lua 5.2。

下面按照字典序来解释这23个函数,点击下面的函数名跳转到对应的位置:

assert

collectgarbage

dofile

error

getmetatable

ipairs

load

loadfile

loadstring

next

pairs

pcall

print

rawequal

rawlen

rawget

rawset

select

setmetatable

tonumber

tostring

type

xpcall

 

 

assertv, [message]

功能:抛出一个错误,当参数 v 的值为 nil 或者 false 时,否则就返回 assert 的所有参数。

用法:

1、local a = assert(false, "this is a error")    --引发一个错误,执行后会报一个错误,并打印出this is a error,如下:

p_w_picpath

2、local a, b = assert(true, "this is a error")  print(a, b)    --不引发错误,返回 assert 的所有参数,如下:

p_w_picpath

 

collectgarbageopt, [arg]

功能:根据opt选项来操作垃圾收集器。

用法:

opt有11个选项:

stop:停止自动执行的垃圾收集器,直到下次显示调用restart选项

restart:重新启动自动执行的垃圾收集器

collect:执行一次完整的垃圾收集循环

count:返回lua使用的总内存大小,第一个返回值为内存大小(KB),第二个值为这个大小(BYTE)对1024取模的值

step:执行指定步数的垃圾收集,步数由arg参数指定

setpause:设置arg为当前垃圾收集器pause数,并返回设置前的值

setstepmul:设置arg为当前垃圾收集器step multiplier的值,并返回设置前的值

setmajorinc:设置arg为当前垃圾收集器setmajorinc的值,并返回设置前的值

isrunning:返回垃圾收集器当前的状态,start状态为true,stop状态为false

generational:把垃圾收集器转换为generational模式

incremental:把垃圾收集器转换为incremental模式

 

dofile[fllename]

功能:打开filename文件,并将其内容当做一个lua块来执行,如果filename缺省,则执行当前标准输入。

用法;

1、filename缺省的情况下,如下使用:

在lua交互窗口中输入dofile(),则进入stdin交互,然后输入你想要执行的代码,最后使用文件结束符退出stdin交互,这样就可以看到dofile执行的结果了:

p_w_picpath

2、指定filename:

p_w_picpath

 

errormessage, [level]

功能:中止程序并返回message,如果level为0,这只是打印message,level为1,打印error所在的地方以及message,如果level为2,打印调用error所在函数的地方以及message。

用法;

p_w_picpath

 

getmetatableobject

功能:获取object对象的元表,如果object没有元表就返回nil,如果object存在元表,并且元表中有__metatable字段,则返回该字段,否则直接返回元表。

用法:

p_w_picpath

 

ipairst

功能:如果t存在__ipairs元方法,则返回该方法的前3个返回值,否则调用ipairs迭代器。

用法:(妹的,为了解释这个我自己写了ipars迭代器。。。。)

p_w_picpath

 

loadld, [source], [mode], [env]

功能:加载一个块,如果ld是字符串,那么将这个字符串作为这个块,如果ld是一个函数,那么直接调用这个函数,并返回这个函数的块。source为编译ld发生错误的时候返回的错误信息,mode是指这个块是文本类型还是二进制类型。当ld为函数时,会将这个函数放入_ENV中去。

用法:

 

loadfile[filename], [mode], [env]

功能:和load类似,只不过从文件里读取块,当filename为空时,从标准输入读取块。

用法 :类似我就不举例了。

 

loadstringstring, [source], [mode], [env]

功能:和load类似,只不过从字符串中读取块。

用法:略。

 

nexttable, [index]

功能:获取table指定索引的下一个索引和值。index没有传则返回初始索引和值。

用法:

p_w_picpath

 

pairst

功能:如果t存在__pairs元方法,则返回该方法的前3个返回值,否则返回next,t和nil。

用法:参见ipairs和next。

 

pcallf, [arg1, ···]

功能:安全调用,用对应参数调用函数f,pcall的第一个返回值表示这次调用是否发生错误,如果一切OK则紧接着返回f的所有返回值,如果发生错误了,则接着返回错误信息。

用法:

p_w_picpath

 

print···

功能:接收任意参数并调用tostring函数转换每一个参数为字符串将他们打印到标准输出。

用法:略。这个你都不明白的话还是别学了。(注意用法)

 

rawequalv1, v2

功能:检查v1是否和v2相等,不调用任何元方法。

用法:略。(注意一般的判断相等,如果v1和v2定义了相同的元方法__eq的话,会调用这个方法来进行相等比较)

 

rawlenv

功能:返回v的长度,v必须为table或者string。不调用任何元方法。

用法:略。

 

rawgettable, index

功能:返回table[index]的值,不调用任何元方法。

用法:略。

 

rawsettable, index, value

功能:设置table[index] = value,不调用任何元方法。

用法:略。

 

selectindex, ···

功能:返回···中index索引之后的所有参数,index为负数时,最后一个参数的索引为-1。

用法:

p_w_picpath

 

setmetatabletable, metatable

功能:设置table的元表为metatable,返回table。如果metatable为nil,则清掉了table的元表,如果table的元表本身存在__metatable字段,那么再次设置元表就会报错。

用法:

 

tonumbere, [base]

功能:将e转换成base进制的数。base可以是2到36。e为数字或者能够转换的字符串,否则返回nil。

用法:略。

 

tostringv

功能:将v转换成字符串,如果v的元方法__tostring存在,则用v作为参数调用那个方法,并把那个方法的返回值作为返回结果。

用法:略。

 

typev

功能:返回v的类型,用一个字符串表示,返回值有:"nil", "table", "number", "string", "thread", "boolean", "function", "userdata"。

用法:略。

 

xpcallf, msgh, [arg1, ···]

功能:类型与pcall,只是把错误信息放在了msgh句柄里。

用法:参看pcall。