Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Итерация с индексом


пример

Иногда вы хотите знать позицию ( индекс ) текущего элемента во время итерации над перечислителем. Для этой цели 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]