La diferencia entre Enumerable#each
y Enumerable#map
es si devuelve el receptor o el resultado del mapa. Volver al receptor es trivial y, por lo general, no es necesario continuar una cadena de métodos después de each
como each{...}.another_method
(probablemente no he visto ese caso. Incluso si desea volver al receptor, puede hacerlo con tap
). Así que creo que todos o la mayoría de los casos en los que se usa Enumerable#each
pueden reemplazarse por Enumerable#map
. ¿Me equivoco? Si estoy en lo correcto, ¿cuál es el propósito de each
? ¿Es map
más lento que each
?¿No se pueden reemplazar todos o la mayoría de los casos de `cada uno 'por` mapa`?
Editar: sé que no es una práctica común el uso de each
cuando no está interesado en el valor de retorno. No estoy interesado en si existe tal práctica, pero estoy interesado en si tal práctica tiene sentido más que desde el punto de vista de la convención.
Usted entiende que 'cada 'es una parte fundamental de Enumerable mientras que' map' no lo es, ¿verdad? ["La clase debe proporcionar un método 'each', que produce miembros sucesivos de la colección."] (Http://ruby-doc.org/core-1.9.3/Enumerable.html). –
@muistooshort No estoy al tanto de eso. Voy a pensar en ello. Gracias. – sawa
Intenta implementar 'map' en términos de' each' y luego 'each' en términos de' map', que pueden darte una idea. –