Map et Collect
Fait partie de la section Fondamentaux du Journey Ruby de Coddy — leçon 68 sur 88.
Alors que each est idéal pour effectuer des actions sur des éléments, vous voulez parfois transformer un tableau en un nouveau. La méthode map (également appelée collect) fait exactement cela : elle crée un nouveau tableau contenant les résultats de l'exécution de votre bloc sur chaque élément.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Affiche : 2, 4, 6, 8La différence clé par rapport à each est que map retourne un nouveau tableau avec les valeurs transformées. Le tableau original reste inchangé.
Voici un exemple pratique qui convertit les températures de Celsius en Fahrenheit :
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Affiche : 32, 68, 212Vous pouvez également utiliser map avec des chaînes de caractères :
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Affiche : Alice, BobLes méthodes map et collect sont identiques. Ruby fournit les deux noms, vous pouvez donc utiliser celui qui se lit le mieux dans votre code. La plupart des développeurs Ruby préfèrent map parce qu'il est plus court.
Défi
FacileLisez une seule ligne d'entrée contenant des entiers séparés par des virgules (par exemple, 2,4,6,8,10).
Divisez l'entrée en un tableau d'entiers, puis utilisez la méthode map pour créer un nouveau tableau où chaque nombre est mis au carré (multiplié par lui-même).
Affichez chaque élément du nouveau tableau de carrés sur sa propre ligne.
Par exemple, si l'entrée est 2,4,6,8,10, la sortie devrait être :
4
16
36
64
100Si l'entrée est 1,2,3,4,5, la sortie devrait être :
1
4
9
16
25Si l'entrée est 3,7,11, la sortie devrait être :
9
49
121Si l'entrée est 10, la sortie devrait être :
100Aide-mémoire
La méthode map (également appelée collect) transforme un tableau en un nouveau en appliquant un bloc à chaque élément. Elle retourne un nouveau tableau avec les valeurs transformées, laissant le tableau d'origine inchangé.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # Affiche : 2, 4, 6, 8Exemple avec la conversion de température :
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # Affiche : 32, 68, 212Exemple avec des chaînes de caractères :
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # Affiche : Alice, Bobmap et collect sont des méthodes identiques. La plupart des développeurs Ruby préfèrent map.
Essayez vous-même
# Lire l'entrée séparée par des virgules
input = gets.chomp
# À FAIRE : Écrivez votre code ci-dessous
# 1. Diviser la chaîne d'entrée en un tableau d'entiers
# 2. Utiliser la méthode map pour mettre chaque nombre au carré
# 3. Afficher chaque nombre au carré sur sa propre ligneCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateurs logiques, partie 47Calculateur de partage de facture
Message de bienvenueSaisie de l'utilisateur10FizzBuzz avec une variante
Présentation du jeuLa méthode FizzBuzz2Variables et types de données
Nombres et variablesType de données StringType de données BooleanType de données SymbolVérification des types de donnéesConventions de nommageRécapitulatif - Création de variables5Prise de décision
Instruction IfIf - ElseRécapitulatif - Calculatrice simpleIf - Else imbriquésInstruction Unless8Boucles
Boucle For avec des intervallesBoucle WhileBreakNextRécapitulatif - FactorielleBoucle TimesBoucle UntilBoucles imbriquéesRécapitulatif - Entrée dynamique3Les opérateurs, partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesRécapitulatif - Calculs simplesOpérateurs de comparaison6Entrées/Sorties de base
Sortie avec putsSortie avec print et pSortie avec des variablesEntrée avec getsLa méthode chompConversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Méthodes
Définir une méthodeParamètres de méthodeValeurs de retourRécapitulatif - Méthode SigmaRécapitulatif - Méthode de validationValeurs de paramètres par défaut12Itérer sur les collections
L'itérateur EachEach avec indexItérer sur les chaînes de caractèresMap et Collect