pairs 、ipairs 都可以遍历 数组和表 的key并返回 key 与其对应的值
不同之处:
ipairs:
1、ipairs 遍历的key 只能是数字,并且数字是从1开始切连续的。
2、ipairs 返回按照 key 的升序返回
pairs:
返回按照数据定义或者插入的顺序返回。
例1- 遍历数组:
function TraversalTable(tb,func) print("========== traversalTable =============") for key,value in func(arr) do print("key:",key,"value:",value) end end arr = {1,2,3,4,5,6} TraversalTable(arr,pairs) TraversalTable(arr,ipairs) ========== TraversalTable 输出 ============= key: 1 value: 1 key: 2 value: 2 key: 3 value: 3 key: 4 value: 4 key: 5 value: 5 key: 6 value: 6 ========== TraversalTable 输出 ============= key: 1 value: 1 key: 2 value: 2 key: 3 value: 3 key: 4 value: 4 key: 5 value: 5 key: 6 value: 6例2-遍历表:
function TraversalTable(tb,func) print("========== TraversalTable 输出 =============") for key,value in func(arr) do print("key:",key,"value:",value) end end arr = {[0]=2,[1]=1,[2]=2,[3]=3} TraversalTable(arr,pairs) TraversalTable(arr,ipairs) ========== TraversalTable 输出 ============= key: 0 value: 2 key: 2 value: 2 key: 3 value: 3 key: 1 value: 1 ========== TraversalTable 输出 ============= --- 此处没有打印 key = 0 的元素 key: 1 value: 1 key: 2 value: 2 key: 3 value: 3 例3-遍历表: function TraversalTable(tb,func) print("========== TraversalTable 输出 =============") for key,value in func(arr) do print("key:",key,"value:",value) end end arr = {['a']=2,['b']=1,['c']=2,['d']=3} TraversalTable(arr,pairs) TraversalTable(arr,ipairs) ========== TraversalTable 输出 ============= key: a value: 2 key: d value: 3 key: c value: 2 key: b value: 1 ========== TraversalTable 输出 ============= ipairs 没有输出 例4-遍历表: function TraversalTable(tb,func) print("========== TraversalTable 输出 =============") for key,value in func(arr) do print("key:",key,"value:",value) end end arr = {['a']=2,['b']=1,[2]=2,[3]=3} TraversalTable(arr,pairs) TraversalTable(arr,ipairs) ========== TraversalTable 输出 ============= key: a value: 2 key: 2 value: 2 key: 3 value: 3 key: b value: 1 ========== TraversalTable 输出 ============= key值为数字的key 从2 开始,因此无法打印出来 例 5- 遍历列表: function TraversalTable(tb,func) print("========== TraversalTable 输出 =============") for key,value in func(arr) do print("key:",key,"value:",value) end end arr = {['a']=2,['b']=1,[1]=2,[2]=3} TraversalTable(arr,pairs) TraversalTable(arr,ipairs) ========== TraversalTable 输出 ============= key: a value: 2 key: 2 value: 3 key: 1 value: 2 key: b value: 1 ========== TraversalTable 输出 ============= key: 1 value: 2 key: 2 value: 3 因此: 在遍历数组时使用 pairs 或者 ipairs 都可以。遍历table时使用 pairs 最好,除非有其他需求转载于:https://www.cnblogs.com/pmsl/p/7419240.html
