lua52中的base库.docx
- 文档编号:29370668
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:7
- 大小:16.48KB
lua52中的base库.docx
《lua52中的base库.docx》由会员分享,可在线阅读,更多相关《lua52中的base库.docx(7页珍藏版)》请在冰豆网上搜索。
lua52中的base库
Lua5.2中的base库(转)
Lua中base库里面的接口都是全局可见的,我在全局环境一篇里面已经谈到了。
在lua5.2中base库增加了2个全局变量和23个函数,这些都可以在lbaselib.c里面找到。
首先增加了两个变量:
_G=当前lua中的全局环境
_VERSION=LUA_VERSION
其中LUA_VERSION是一个宏,在每个版本的Lua中都不一样,定义在lua.h中
可以看到如果我用print(_VERSION)打印出来,那么显示的应该是Lua5.2。
下面按照字典序来解释这23个函数,点击下面的函数名跳转到对应的位置:
assert
collectgarbage
dofile
error
getmetatable
ipairs
load
loadfile
loadstring
next
pairs
pcall
rawequal
rawlen
rawget
rawset
select
setmetatable
tonumber
tostring
type
xpcall
assert(v,[message])
功能:
抛出一个错误,当参数v的值为nil或者false时,否则就返回assert的所有参数。
用法:
1、locala=assert(false,"thisisaerror")--引发一个错误,执行后会报一个错误,并打印出thisisaerror,如下:
2、locala,b=assert(true,"thisisaerror")print(a,b)--不引发错误,返回assert的所有参数,如下:
collectgarbage(opt,[arg])
功能:
根据opt选项来操作垃圾收集器。
用法:
opt有11个选项:
stop:
停止自动执行的垃圾收集器,直到下次显示调用restart选项
restart:
重新启动自动执行的垃圾收集器
collect:
执行一次完整的垃圾收集循环
count:
返回lua使用的总内存大小,第一个返回值为内存大小(KB),第二个值为这个大小(BYTE)对1024取模的值
step:
执行指定步数的垃圾收集,步数由arg参数指定
setpause:
设置arg为当前垃圾收集器pause数,并返回设置前的值
setstepmul:
设置arg为当前垃圾收集器stepmultiplier的值,并返回设置前的值
setmajorinc:
设置arg为当前垃圾收集器setmajorinc的值,并返回设置前的值
isrunning:
返回垃圾收集器当前的状态,start状态为true,stop状态为false
generational:
把垃圾收集器转换为generational模式
incremental:
把垃圾收集器转换为incremental模式
dofile([fllename])
功能:
打开filename文件,并将其内容当做一个lua块来执行,如果filename缺省,则执行当前标准输入。
用法;
1、filename缺省的情况下,如下使用:
在lua交互窗口中输入dofile(),则进入stdin交互,然后输入你想要执行的代码,最后使用文件结束符退出stdin交互,这样就可以看到dofile执行的结果了:
2、指定filename:
error(message,[level])
功能:
中止程序并返回message,如果level为0,这只是打印message,level为1,打印error所在的地方以及message,如果level为2,打印调用error所在函数的地方以及message。
用法;
getmetatable(object)
功能:
获取object对象的元表,如果object没有元表就返回nil,如果object存在元表,并且元表中有__metatable字段,则返回该字段,否则直接返回元表。
用法:
ipairs(t)
功能:
如果t存在__ipairs元方法,则返回该方法的前3个返回值,否则调用ipairs迭代器。
用法:
(妹的,为了解释这个我自己写了ipars迭代器。
。
。
。
)
load(ld,[source],[mode],[env])
功能:
加载一个块,如果ld是字符串,那么将这个字符串作为这个块,如果ld是一个函数,那么直接调用这个函数,并返回这个函数的块。
source为编译ld发生错误的时候返回的错误信息,mode是指这个块是文本类型还是二进制类型。
当ld为函数时,会将这个函数放入_ENV中去。
用法:
loadfile([filename],[mode],[env])
功能:
和load类似,只不过从文件里读取块,当filename为空时,从标准输入读取块。
用法:
类似我就不举例了。
loadstring(string,[source],[mode],[env])
功能:
和load类似,只不过从字符串中读取块。
用法:
略。
next(table,[index])
功能:
获取table指定索引的下一个索引和值。
index没有传则返回初始索引和值。
用法:
pairs(t)
功能:
如果t存在__pairs元方法,则返回该方法的前3个返回值,否则返回next,t和nil。
用法:
参见ipairs和next。
pcall(f,[arg1,···])
功能:
安全调用,用对应参数调用函数f,pcall的第一个返回值表示这次调用是否发生错误,如果一切OK则紧接着返回f的所有返回值,如果发生错误了,则接着返回错误信息。
用法:
print(···)
功能:
接收任意参数并调用tostring函数转换每一个参数为字符串将他们打印到标准输出。
用法:
略。
这个你都不明白的话还是别学了。
(注意用法)
rawequal(v1,v2)
功能:
检查v1是否和v2相等,不调用任何元方法。
用法:
略。
(注意一般的判断相等,如果v1和v2定义了相同的元方法__eq的话,会调用这个方法来进行相等比较)
rawlen(v)
功能:
返回v的长度,v必须为table或者string。
不调用任何元方法。
用法:
略。
rawget(table,index)
功能:
返回table[index]的值,不调用任何元方法。
用法:
略。
rawset(table,index,value)
功能:
设置table[index]=value,不调用任何元方法。
用法:
略。
select(index,···)
功能:
返回···中index索引之后的所有参数,index为负数时,最后一个参数的索引为-1。
用法:
setmetatable(table,metatable)
功能:
设置table的元表为metatable,返回table。
如果metatable为nil,则清掉了table的元表,如果table的元表本身存在__metatable字段,那么再次设置元表就会报错。
用法:
tonumber(e,[base])
功能:
将e转换成base进制的数。
base可以是2到36。
e为数字或者能够转换的字符串,否则返回nil。
用法:
略。
tostring(v)
功能:
将v转换成字符串,如果v的元方法__tostring存在,则用v作为参数调用那个方法,并把那个方法的返回值作为返回结果。
用法:
略。
type(v)
功能:
返回v的类型,用一个字符串表示,返回值有:
"nil","table","number","string","thread","boolean","function","userdata"。
用法:
略。
xpcall(f,msgh,[arg1,···])
功能:
类型与pcall,只是把错误信息放在了msgh句柄里。
用法:
参看pcall。
本文出自“菜鸟浮出水”博客,请务必保留此出处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lua52 中的 base