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 的混合

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

   

a = {[0] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

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

a = {[1] = "a1", [2] = "a2", [3] = "a3", [5] = "a4", [6] = "a5"} 

table={n = 4, "Hello", [3] = "oi", m = 0, "World", a=1, b=2, "Lua","C#"}

猜你喜欢

转载自www.cnblogs.com/luguoshuai/p/10042643.html