lua中pairs 和 ipairs 的区别

时间:2023-03-09 06:47:30
lua中pairs 和 ipairs 的区别

1、table中存储值的时候,是按照顺序存储的,存储 k-v 的时候,是按照 k 的哈希值存储的。

2、ipairs --- 只能输出 table 中的值,并且不可输出nil,遇到 ni l就退出

  pairs --- 可以输出 table 中的值与 k-v ,并且是按照先输出值,再乱序输出 k-v 的顺序进行输出,可以输出 nil

3、以下是结论:

1>单独的值:两者的输出结果一致

2>单独的 k-v:再细分为  --- k 全部为数字(ipairs一定是需要从1开始,每次递增1,遇到不连续的k就退出))、k 全部为非数字、k为数字与非数字的混合

3>值与 k-v 的混合: 当数组索引与数字 k 有冲突的时候,ipairs 不遍历这个情况的 k-v ,不冲突会遍历数字 k

4、以下是针对3的部分 ipairs 测试代码:

a = {[] = "a1", [] = "a2", [] = "a3", [] = "a4", [] = "a5"} 

没有结果输出!!!因为纯数字的 k 不是从 1开始的

a = {[] = "a1", [] = "a2", [] = "a3", [] = "a4", [] = "a5"} 

lua中pairs 和 ipairs 的区别

table={n = , "Hello", [] = "oi", m = , "World", a=, b=, "Lua","C#"}

lua中pairs 和 ipairs 的区别

table={"Hello", [] = "oi", "World"}

lua中pairs 和 ipairs 的区别

table={"Hello", [] = "oi"}

lua中pairs 和 ipairs 的区别