побочные эффекты одинаковы, что добавляет путаницу вашему реверс-инжинирингу.
Да, оба перебирают массив (фактически, все, что смешивается в *)1006 * Enumerable ), но map вернет массив, состоящий из результатов блока, тогда как каждый просто вернетисходный массив.
Возвращаемое значение каждый является просто исходным массивом и редко используется в коде Ruby, но map является одним из наиболее важных функциональных инструментов .
Что делает map
, это возвращает массив, который содержит результаты переданного блока или именованного метода.Например:
2.2.3 :001 > [:how, :now, :brown, :cow].map &:to_s
=> ["how", "now", "brown", "cow"]
В этом случае я пропустил не блок, а просто Symbol
, однако у class Symbol
объектов есть метод to_proc
, который приведет к:
[:how.to_s, :now.to_s, ...]
Кстати, вам может быть трудно найти документацию, потому что map - это метод в Enumerable , а каждый (один метод, требуемый для (перечислимый модуль) - это метод в Массив .
В качестве заметки: реализация map основана на каждая .