Array#each
exécute le bloc donné pour chaque élément du tableau, puis retourne 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 avez un tableau défini ainsi:
arr = ["tokyo", "london", "rio"]
Ensuite, essayez d'exécuter each
:
arr.each { |element| element.capitalize }
# => ["tokyo", "london", "rio"]
Notez la valeur de retour est tout simplement le même tableau. Le code à l'intérieur du bloc each
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, appeler la méthode de tableau map
retourne un nouveau tableau dont les éléments sont les valeurs de retour de chaque tour de l'exécution du bloc map
:
arr.map { |element| element.capitalize }
# => ["Tokyo", "London", "Rio"]
de réponse parfaite à comprendre. Juste un .. Clause de non-responsabilité: Si vous utilisez trop la valeur de retour de la fonction de carte, vous risquez de perdre beaucoup de mémoire. – Imran