Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

迭代器for遍历table时,ipairs和pairs的区别:

区别一:ipairs遇到nil会停止,pairs会输出nil值然后继续下去

区别二:ipairs并不会输出table中存储的键值,会跳过键值对,输出table中的值,遇到nil则会停止,而pairs会输出table中的键和键值对。

这是因为,table在存储值的时候是按照顺序的,但是在存储键值对的时候是按照键的哈希值存储的,并不会按照键的字母顺序或是数字顺序存储。

=》对于a来说,如果执行print(a[3]),输出的结果也会是Good。也就是说table并不会给键值对一个索引值。

也就是说,ipairs知识按照索引值顺序,打印出了table中有索引的数据,没有索引值的不管。

而pairs是先按照索引值打印,打印完成后再按照键值对的键的哈希值打印它的值。

看下面的例子: 

local a = {"Hello", "World", a = 1, b = 2, x = 10, y = 20, "Good", nil, "Bye"}

for i,v in ipairs(a) do

print(v)

end

for k,v in pairs(a) do

print(k,v)

end


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.0k views
Welcome To Ask or Share your Answers For Others

Please log in or register to answer this question.

Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...