对于那些想知道为什么ipairs不会一直打印表的所有值的人,这就是原因(我会对此发表评论,但我没有足够的好男孩点)。
函数ipairs仅适用于键为 1 的元素的表。如果存在键为 1 的元素,ipairs 将尝试按顺序尽可能远,1 -> 2 -> 3 -> 4 等,直到它找不到具有序列中下一个键的元素。元素的顺序无关紧要。
不满足这些要求的表将无法与ipairs 一起使用,请改用对。
例子:
ipairsCompatable = {"AAA", "BBB", "CCC"}
ipairsCompatable2 = {[1] = "DDD", [2] = "EEE", [3] = "FFF"}
ipairsCompatable3 = {[3] = "work", [2] = "does", [1] = "this"}
notIpairsCompatable = {[2] = "this", [3] = "does", [4] = "not"}
notIpairsCompatable2 = {[2] = "this", [5] = "doesn't", [24] = "either"}
ipairs将尽可能地进行迭代,但不会迭代表中的任何其他元素。
kindofIpairsCompatable = {[2] = 2, ["cool"] = "bro", [1] = 1, [3] = 3, [5] = 5 }
打印这些表时,这些是输出。我还包含了对输出进行比较。
ipairs + ipairsCompatable
1 AAA
2 BBB
3 CCC
ipairs + ipairsCompatable2
1 DDD
2 EEE
3 FFF
ipairs + ipairsCompatable3
1 this
2 does
3 work
ipairs + notIpairsCompatable
pairs + notIpairsCompatable
2 this
3 does
4 not
ipairs + notIpairsCompatable2
pairs + notIpairsCompatable2
2 this
5 doesnt
24 either
ipairs + kindofIpairsCompatable
1 1
2 2
3 3
pairs + kindofIpairsCompatable
1 1
2 2
3 3
5 5
cool bro