lua pairs 与 ipairs

mac2022-06-30  23

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

最新回复(0)