LUA各知识点举例及详解.doc

LUA各知识点举例及详解.doc

ID:57886034

大小:88.00 KB

页数:10页

时间:2020-09-02

LUA各知识点举例及详解.doc_第1页
LUA各知识点举例及详解.doc_第2页
LUA各知识点举例及详解.doc_第3页
LUA各知识点举例及详解.doc_第4页
LUA各知识点举例及详解.doc_第5页
资源描述:

《LUA各知识点举例及详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、5.11 遍历表的数组部分ipairs()允许您在不使用数值for循环的情况下遍历一个表的数组部分。一些编程人员倾向于使用ipairs()而不是数值for循环,因为这样更简洁:1.> tbl = {"alpha", "beta", "gamma"} 2.> for idx,value in ipairs(tbl) do 3.>> print(idx, value) 4.>> end 5.1, alpha 6.2, beta 7.3, gamma ipairs()函数接受一个表作为输入,返回遍历一个表的数组部分

2、所需的所有信息,包括迭代器函数本身。每一次迭代器函数的调用都返回一个元素的数值序号和这个元素本身。这些变量可以按照您的期望任意命名,而且始终都在for循环的范围之内(即它们不能被这个范围之外的对象所访问)。您可以通过在解释器里执行以下几个语句来更深入地了解ipairs()函数:1.> print(ipairs(tbl)) 2.function: 0x300980, table: 0x3072c0, 0 3.> print(tbl) 4.table: 0x3072c0 解释器会显示ipairs()所返回的一个迭

3、代器函数、状态(在这里是您传递给它的表)和迭代器的初始值(0)。这里没有什么深奥的东西,只是一组有用的函数。5.12 遍历完整的表另一个函数,pairs()允许您完整地遍历一个表,包括表的数组部分和散列表部分。使用方法和ipairs()一样:将表传入其中,并作为范型for循环的一部分来使用即可:1.> tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"} 2.> for key,value in pairs(tbl) do 3.>> print(k

4、ey, value) 4.>> end 5.1, alpha 6.2, beta 7.one, uno 8.two, dos 使用pairs()函数遍历在前面的样例中,pairs()函数好像是以元素添加的顺序来遍历的,但是这只是一个巧合。在这个函数里遍历元素的顺序是不确定的,甚至是数值键也如此。如果需要顺序地遍历表里的数值元素,就必须使用ipairs()函数,ipairs()可以保证顺序遍历。pairs()函数的非顺序遍历由散列表的实现方式带来:一个关联键/值(associatedkey/value)对的集合

5、,没有内部顺序。在使用pairs()函数的时候,您必须保证不添加元素。这是因为pairs()调用了next()函数,在Lua5.1的参考手册中,对此函数有一些警告:"在遍历中,如果您要对表中不存在的区域赋值,那么next()的行为是不确定的。这样也许会修改已存在区域的值。特别地,您也许会把已经赋值的区域清除掉。"这意味着若您在遍历的时候往表里添加元素,则next()也许没有反应,也可能更早地结束,或者会抛出一个错误。在使用pairs()时,这一点必须牢记。【责任编辑:云霞 TEL:(010)68476606】

6、5.13 表的清除正如Lua5.1参考手册对next()函数所阐述的,您可以在遍历的过程里通过使用pairs()函数清除整个表。下面的代码可以清除一个表里的所有元素:1.for key,value in pairs(tbl) do 2.    tbl[key] = nil 3.end 因为pairs()对于整个表的键都有作用,所以这是一个清除所有元素的捷径(如果您需要重新使用一个表)。其他的迭代器Lua里的许多其他函数都可以产生迭代器,这些迭代器也是非常有用的。sring.gmatch()函数可以通过Lua模

7、式匹配产生一个匹配string的迭代器。在第6章里,您可以学习到更多关于这个函数和Lua模式匹配的信息,这里有一些样例:for word in string.gmatch("These are some words", "%S+") do print(word) end These are some words for char in string.gmatch("Hello!", ".") do print(char) end H e l l o ! 1.迭代器与Closure:   在Lua中,迭代器通常

8、为函数,每调用一次函数,即返回集合中的“下一个”元素。每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置和下一次遍历时的位置。从这一点看,Lua中closure机制为此问题提供了语言上的保障,见如下示例:1functionvalues(t)2locali=03returnfunction()4i=i+15returnt[i]6end7end8t={10,20,30}9it=va

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。