迭代与索引
有时,你希望在迭代枚举器时知道当前元素的位置( 索引 )。为此,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]