主页 > 知识库 > Lua中ipair和pair的区别

Lua中ipair和pair的区别

热门标签:武汉百应人工智能电销机器人 400手机电话免费办理 扬州电销外呼系统软件 上海企业外呼系统排名 百度地图标注位置网站 如何利用高德地图标注家 开通400电话申请流程 电脑外呼系统辐射大吗 智能语音电销的机器人

先看看官方手册的说明吧:

复制代码 代码如下:

pairs (t)If t has a metamethod __pairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: the next function, the table t, and nil, so that the construction
     for k,v in pairs(t) do body end
will iterate over all key–value pairs of table t.
See function next for the caveats of modifying the table during its traversal.

ipairs (t)If t has a metamethod __ipairs, calls it with t as argument and returns the first three results from the call.
Otherwise, returns three values: an iterator function, the table t, and 0, so that the construction
     for i,v in ipairs(t) do body end
will iterate over the pairs (1,t[1]), (2,t[2]), ..., up to the first integer key absent from the table.

原来,pairs会遍历table的所有键值对。如果你看过耗子叔的Lua简明教程,你知道table就是键值对的数据结构。

而ipairs就是固定地从key值1开始,下次key累加1进行遍历,如果key对应的value不存在,就停止遍历。顺便说下,记忆也很简单,带i的就是根据integer key值从1开始遍历的。

请看个例子。

复制代码 代码如下:

tb = {"oh", [3] = "god", "my", [5] = "hello", [6] = "world"}

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


输出结果就是:
复制代码 代码如下:

1       oh
2       my
3       god

因为tb不存在tb[4],所以遍历到此为止了。
复制代码 代码如下:

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

输出结果:
复制代码 代码如下:

1       oh
2       my
3       god
6       world
5       hello

我们都能猜到,将输出所有的内容。然而你发现输出的顺序跟你tb中的顺序不同。
如果我们要按顺序输出怎么办?办法之一是:
复制代码 代码如下:

for i = 1, #tb do
     if tb[i] then
          print(tb[i])
     else
end

当然,仅仅是个数组的话,ipairs也没问题。

以上(为什么不少回答会以「以上」收尾?,这里就是结束的意思吧)

标签:新余 江西 黑龙江 延边 嘉峪关 武汉 宜宾 张掖

巨人网络通讯声明:本文标题《Lua中ipair和pair的区别》,本文关键词  Lua,中,ipair,和,pair,的,区别,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Lua中ipair和pair的区别》相关的同类信息!
  • 本页收集关于Lua中ipair和pair的区别的相关信息资讯供网民参考!
  • 推荐文章