Jest each_pair
metoda pozwala uzyskać pary skrótów w każdej iteracji pętli:
{ 1 => "a", 2 => "b" }.each_pair do |key, value|
# do something with #{key} and #{value}
end
W jaki sposób indeks bieżącego elementu tablicy może być znany w każdej iteracji pętli?
array.each do |element|
# what is element index in array?
end
Istnieje nudne rozwiązanie wykorzystujące inkrementujący iterator. Ale to iterator powinien zostać przypisany przed pętlą i powinien być ręcznie zwiększany o każdy iteracja. To jest oczywiście nudne.
Będzie świetnie, jeśli istnieje jakiś sposób na zip niektórych tablic 1..
array i zdobądź tablicę krotek ["b", "d", "e"] → [(1,"b"), (2,"d"), (3,"e")] and
than pattern matched each element of the pair in
| | `Instrukcja.
W końcu to, czego szukam, to jakaś funkcja f
, to:
f(["a"]) do |index, element|
# index == 1, element == "a"
end
Odpowiedzi:
5 dla odpowiedzi № 1Możesz przechodzić przez tablicę i pobierać bieżący indeks za pomocą Enumerable :: each_with_index
1 dla odpowiedzi nr 2
Popraw mnie, jeśli się mylę, ale zakładam, że chcesz tablicę składającą się z pod-tablic z indeksem tablic i wartościami original?
a= ["b", "d", "e"]
a.enum_with_index.map {|ind, val| [ind, val]
=> [[0, "b"], [1, "d"], [2, "e"]]