Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Iteracja z indeksem


Przykład

Czasami chcesz poznać pozycję ( indeks ) bieżącego elementu podczas iteracji po module wyliczającym. W tym celu Ruby udostępnia metodę with_index . Można go zastosować do wszystkich modułów wyliczających. Zasadniczo, dodając with_index do wyliczenia, można wyliczyć to wyliczenie. Indeks jest przekazywany do bloku jako drugi argument.

[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 ma opcjonalny argument - pierwszy indeks, który domyślnie ma wartość 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]

Istnieje specjalna metoda each_with_index . Jedyna różnica między nim a każdym z nich. Z each.with_index polega na tym, że nie można przekazać argumentu, więc pierwszy indeks ma wartość 0 cały czas.

[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]