Ці побічні ефекти такі ж , які додають деяку плутанину в вашу зворотну інженерію.
Так, обидва ітерації над масивом (насправді, над усім, що змішується в Enumerable ), але map поверне масив, що складається з результатів блоку, тоді як кожен просто поверне вихідний масив.
Повернене значення кожного - це лише вихідний масив і рідко використовується в коді Ruby, але map є одним з найважливіших функціональних інструментів .
Що map
повертає масив, який містить результати переданого блоку або іменованого методу. Наприклад:
2.2.3 :001 > [:how, :now, :brown, :cow].map &:to_s
=> ["how", "now", "brown", "cow"]
У цьому випадку я не передав блок, а лише a Symbol
, однак class Symbol
об'єкти мають to_proc
метод, який призведе до:
[:how.to_s, :now.to_s, ...]
До речі, можливо, вам важко знайти документацію, оскільки map - це метод у Enumerable, тоді як кожен (один метод, який вимагає модуль Enumerable ) - це метод у Array .
Як зауваження у дрібниці: реалізація карти базується на кожному .