gpt4 book ai didi

Lua 中 pairs 和 ipairs 的区别

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Lua 中 pairs 和 ipairs 的区别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

官方文档上的说明:

ipairs (t) 。

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 (t) 。

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以及pairs 的不同。pairs可以遍历表中所有的key,并且除了迭代器本身以及遍历表本身还可以返回nil;但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出。它只能遍历到表中出现的第一个不是整数的key 。

下面举个例子 。

  。

复制代码 代码如下:

local tabFiles = {  
[3] = "test2",  
[6] = "test3",  
[4] = "test1" 
}  
for k, v in ipairs(tabFiles) do 
    print(k, v)  
end 

  。

猜测它的输出结果是什么呢?根据刚才的分析,它在 ipairs(tabFiles) 遍历中,当key=1时候value就是nil,所以直接跳出循环不输出任何值.

  。

复制代码 代码如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua" 
>Exit code: 0 

  。

那么,如果是 。

  。

复制代码 代码如下:

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

  。

则会输出所有

  。

复制代码 代码如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua"   
3 test2  
6 test3  
4 test1  
>Exit code: 0 

  。

现在改变一下表内容

  。

复制代码 代码如下:

local tabFiles = {  
[1] = "test1",  
[6] = "test2",  
[4] = "test3" 
}  
 
for k, v in ipairs(tabFiles) do 
    print(k, v)  
end 

  。

现在的输出结果显而易见就是key=1时的value值test1 。

  。

复制代码 代码如下:

>lua -e "io.stdout:setvbuf 'no'" "test.lua"   
1 test1  
>Exit code: 0 

  。

  。

复制代码 代码如下:

-- [[示例1.]] --  
local tt =  
{  
    [1] = "test3",  
    [4] = "test4",  
    [5] = "test5" 
}  
 
for i,v in pairs(tt) do     -- 输出 "test4" "test3" "test5" 
    print( tt[i] )  
end  
 
for i,v in ipairs(tt) do    -- 输出 "test3" k=2时断开  
    print( tt[i] )  
end  
 
-- [[示例2.]] --  
tbl = {"alpha", "beta", [3] = "uno", ["two"] = "dos"}  
 
for i,v in ipairs(tbl) do    --输出前三个  
    print( tbl[i] )  
end  
 
for i,v in pairs(tbl) do    --全部输出  
    print( tbl[i] )  
end 

  。

Lua 中 pairs 和 ipairs 的区别

Lua 中 pairs 和 ipairs 的区别

最后此篇关于Lua 中 pairs 和 ipairs 的区别的文章就讲到这里了,如果你想了解更多关于Lua 中 pairs 和 ipairs 的区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com