Array#each
exécute le bloc donné pour chaque élément du tableau, puis renvoie le tableau lui-même.
Array#map
exécute également le bloc donné pour chaque élément du tableau, mais retourne un nouveau tableau dont les valeurs sont les valeurs de retour de chaque itération du bloc.
Exemple: supposons que vous ayez un tableau défini ainsi:
arr = ["tokyo", "london", "rio"]
Ensuite, essayez d'exécuter each
:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
Notez que la valeur de retour est simplement le même tableau. Le code à l'intérieur du each
bloc est exécuté, mais les valeurs calculées ne sont pas renvoyées; et comme le code n'a pas d'effets secondaires, cet exemple n'effectue aucun travail utile.
En revanche, l'appel de la map
méthode du tableau retourne un nouveau tableau dont les éléments sont les valeurs de retour de chaque cycle d'exécution du map
bloc:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]