La differenza tra Enumerable#each
e Enumerable#map
è se restituisce il destinatario o il risultato mappato. Tornando al ricevitore è banale e di solito non è necessario continuare una catena di metodi dopo each
come each{...}.another_method
(probabilmente non ho visto tale caso. Anche se si desidera tornare al ricevitore, è possibile farlo con tap
). Quindi penso che tutti o quasi tutti i casi in cui viene utilizzato lo standard Enumerable#each
possono essere sostituiti da Enumerable#map
. Ho sbagliato? Se ho ragione, qual è lo scopo di each
? map
è più lento di each
?Non è possibile sostituire tutti o la maggior parte dei casi di `each` con` map`?
Edit: So che c'è una pratica comune utilizzare each
quando non si è interessati al valore di ritorno. Non mi interessa sapere se tale pratica esista, ma mi interessa sapere se tale pratica abbia un senso diverso dal punto di vista della convenzione.
Capisci che 'each' è una parte fondamentale di Enumerable mentre' map' non lo è, giusto? ["La classe deve fornire un metodo' each', che produce i membri successivi della collezione. "] (Http://ruby-doc.org/core-1.9.3/Enumerable.html). –
@muistooshort Non ne sono consapevole. Ci penserò. Grazie. – sawa
Provate ad implementare 'map' in termini di' each' e quindi 'each' in termini di' map', che potrebbe darvi un po 'di intuizione. –