Lua习题分析(一):table、‘#’、“ipairs”和“pairs”


我们先看一下这次的题目,这是一道根据内容写输出的题目:

local data = {[0] = 'hello', [1] = 'world', [2] = 'xuerbuhuan'}
print(#data)

for k, v in ipairs(data) do
    print(k, v)
end

for k, v in pairs(data) do
    print(k, v)
end 

这道题目考察以下两个方面:

1 用‘#’取table的长度

我们知道,table的默认索引是从1开始的。‘#’符所取的长度,是从索引1开始,直到遇到第一个nil value终止

2 “ipairs”和“pairs”的区别

ipairs返回一个迭代器函数、table或者0;它会从key=1开始迭代table中的键值对,直到遇到第一个nil value

pairs会迭代table中所有键值对;如果table中含有元方法__pairs,返回它的前三个结果,否则返回函数next,table,nil。

因此,这段代码的输出是:

2
1   world
2   xuerbuhuan
0   hello
2   xuerbuhuan
1   world

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形...
    Lee坚武阅读 7,419评论 0 51
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,934评论 0 17
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,730评论 18 399
  • 1.1程序块:Lua执行的每段代码,例如一个源代码文件或者交互模式中输入的一行代码,都称为一个程序块 1.2注释:...
    c_xiaoqiang阅读 7,464评论 0 9
  • 麦子是我的大学好朋友,身材很苗条,最让人羡慕嫉妒恨的是不管她怎么吃都不胖,和我一样。她眼睛水汪汪的,澄澈清亮,小嘴...
    彩红fy阅读 2,929评论 0 2

友情链接更多精彩内容