迭代與索引
有時,你希望在迭代列舉器時知道當前元素的位置( 索引 )。為此,Ruby 提供了 with_index
方法。它可以應用於所有列舉器。基本上,通過將 with_index
新增到列舉中,你可以列舉該列舉。索引作為第二個引數傳遞給塊。
[2,3,4].map.with_index { |e, i| puts "Element of array number #{i} => #{e}" }
#Element of array number 0 => 2
#Element of array number 1 => 3
#Element of array number 2 => 4
#=> [nil, nil, nil]
with_index
有一個可選引數 - 預設情況下第一個是 0
的索引:
[2,3,4].map.with_index(1) { |e, i| puts "Element of array number #{i} => #{e}" }
#Element of array number 1 => 2
#Element of array number 2 => 3
#Element of array number 3 => 4
#=> [nil, nil, nil]
each_with_index
有一個具體的方法。它與 each.with_index
的唯一區別在於你不能將引數傳遞給它,所以第一個索引始終是 0
。
[2,3,4].each_with_index { |e, i| puts "Element of array number #{i} => #{e}" }
#Element of array number 0 => 2
#Element of array number 1 => 3
#Element of array number 2 => 4
#=> [2, 3, 4]