Te skutki uboczne są takie same, która jest dodanie trochę zamieszania do inżynierii odwrotnej.
Tak, oba iterują po tablicy (a właściwie po wszystkim, co miesza się w Enumerable ), ale map zwróci Array złożony z wyników bloku, podczas gdy każdy zwróci oryginalny Array.
Wartość zwracana każdego z nich to tylko oryginalna tablica i jest rzadko używana w kodzie Rubiego, ale mapa jest jednym z najważniejszych narzędzi funkcjonalnych .
Co map
robi to zwraca tablicę zawierającą wyniki bloku lub metody o nazwie, która jest przekazywana. Na przykład:
2.2.3 :001 > [:how, :now, :brown, :cow].map &:to_s
=> ["how", "now", "brown", "cow"]
W tym przypadku nie przekazałem bloku, a tylko a Symbol
, jednak class Symbol
obiekty mają to_proc
metodę, która spowoduje:
[:how.to_s, :now.to_s, ...]
BTW, możesz mieć trudności ze znalezieniem dokumentacji, ponieważ map jest metodą w Enumerable, podczas gdy każda (jedyna metoda wymagana przez moduł Enumerable ) jest metodą w Array .
Uwaga: implementacja mapy jest oparta na każdym z nich .