Lua 5.1 中lua函数和库函数

PS:仅作记录,自查具体实现一、基本库函数(basic functions)_G:保存全局环境的全局变量(不是函数)(即_G._G = _G)。Lua本身不使用这个变量;改变它的值不会影响任何环境,反之亦然。(改变环境使用setfenv)_VERSION:保存包含当前解释器版本的字符串的全局变量(不是函数),5.1中这个变量的值是“Lua 5.1”。assert(v [, mess...
摘要由CSDN通过智能技术生成

PS:仅作记录,自查具体实现

一、基本库函数(basic functions

_G:保存全局环境的全局变量(不是函数)(即_G._G = _G)。Lua本身不使用这个变量;改变它的值不会影响任何环境,反之亦然。(改变环境使用setfenv)

_VERSION:保存包含当前解释器版本的字符串的全局变量(不是函数),5.1中这个变量的值是“Lua 5.1”。

assert(v [, message]) :断言函数。  当参数v的值为真时,不做任何处理返回其所有参数;为假(即nil或false)时,返回messagemessage是一个可以自定义的错误提示信息,不写时默认为“assertion failed!”(断言失败!)。

collectgarbage([opt [, arg]]):垃圾回收函数。 函数是垃圾收集器的通用接口,它根据第一个参数执行不同的函数

  1. "collect":执行完整的垃圾收集循环,这是默认选项。
  2. "stop":停止垃圾收集器
  3. "restart":重新启动垃圾收集器
  4. "count":返回Lua使用的总内存(单位为KB)
  5. "step":执行垃圾收集步骤,步骤“size”由arg以非指定的方式控制(较大的值意味着更多的步骤)。如果你想控制步长,你必须通过实验调整参数的值。如果该步骤完成了一个收集循环,则返回true
  6. "setpause":将arg设置为收集器暂停的新值,返回前一个pause值。
  7. "setstepmul":将arg设置为收集器的阶跃乘法器的新值,返回step之前的值。

dofile([filename]):打开指定的文件并将其内容作为Lua块执行。在没有参数调用时,dofile执行标准输入(stdin)的内容。返回该块返回的所有值。在出现错误时,dofile将错误传播给它的调用者(也就是说,dofile不以受保护模式运行)

error(message [, level]):终止最后一个被调用的受保护函数并返回message作为错误信息,error函数没有返回值。通常,error会在消息的开头添加一些关于错误位置的信息。level参数指定如何获取错误位置。对于级别1(默认),错误位置是调用error函数的位置;第2级将错误指向调用error函数所在的位置等等。传递0级可以避免向消息添加错误位置信息。

setfenv(f, table):设置给定函数要使用的环境。f可以是Lua函数,也可以是指定该堆栈级别上的函数的数字:级别1是调用setfenv的函数。setfenv返回给定的函数。作为一种特殊情况,当f为0时,setfenv会改变运行线程的环境。在这种情况下,setfenv不返回任何值。

getfenv([f]):返回函数使用的当前环境。f可以是一个Lua函数,也可以是指定堆栈级别上的函数的数字:级别1是调用getfenv的函数。如果给定的函数不是Lua函数,或者f为0,则getfenv返回全局环境。f的默认值是1

setmetatable(table, metatable):为给定的表设置元表,函数返回一个表。(不能从Lua更改其他类型的元表,只能从c更改)如果元表为空,则删除给定表的元表。如果原始的元表具有“__metatable”字段,会报错。

getmetatable(object):如果对象没有元表,则返回nil。否则,如果对象的元表具有“__metatable”字段,则返回关联的值。否则,返回给定对象的元表。

load(func [, chunkname]):使用函数func加载一个块来获取它的片段。对func的每个调用都必须返回一个字符串,该字符串与前面的结果相连接,返回空字符串、nil或no值表示块结束。如果没有错误,则将编译后的块作为函数返回;否则,返回nil加上错误信息,返回函数的环境是全局环境。chunkname用作错误信息和调试信息的块名称,默认为“=(load)”。

loadfile([filename]):类似于load,但如果没有给定文件名,则从filename文件或标准输入获取数据块

loadstring(string [, chunkname]):类似于load,但从给定字符串获取块。要加载和运行给定的字符串,请使用这个方式    assert(loadstring(s))()   。没有string时,chunkname默认为给定的字符串。

next(table [, index]):允许程序遍历表的所有字段。它的第一个参数是一个表,第二个参数是这个表中的一个索引。next返回表的下一个索引及其关联值。当以nil作为第二个参数调用时,next将返回一个初始索引及其关联值。当使用最后一个索引或空表中的nil调用时,next将返回nil。如果第二个参数不存在,则将其默认为nil。可以使用next(t)检查表是否为空。

注:1)、即使对于数值索引,也没有指定索引的枚举顺序。若要按数字顺序遍历表,请使用数值 for或ipairs函数。

        2)、如果在遍历期间将任何值赋给表中不存在的字段,则next的行为是undefined未定义的。但是,可以修改现有的字段。特别是,可以清除现有字段。

pairs(t):返回三个值:下一个函数、表t和nil,以便构造 for k,v in pairs(t) do body end 将遍历表t的所有键值对。

注:有关在遍历过程中修改表的注意事项,请参阅函数 next

ipairs(t):返回三个值:一个迭代器函数、表t和0,以便构造 for i,v in ipairs(t) do body end 将遍历对(1,t[1]), (2,t[2]),···,直到第一个没有出现在表中的整数键

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值