Élever au carré les éléments d’un tableau est une tâche courante en programmation. Ruby offre plusieurs manières élégantes d’accomplir cela efficacement. Cet article explore quatre approches, en comparant leur efficacité et leur lisibilité.
Table des matières
- Méthode 1 : Utilisation de la méthode
map
- Méthode 2 : Utilisation de la méthode
each
- Méthode 3 : Utilisation de
each_with_index
- Méthode 4 : Utilisation de
inject
- Conclusion
- FAQ
Méthode 1 : Utilisation de la méthode map
La méthode map
est la manière la plus idiomatique et efficace d’élever au carré les éléments d’un tableau en Ruby. Elle itère sur chaque élément, applique un bloc de code donné, et renvoie un nouveau tableau contenant les résultats. Cette approche est préférée pour son style fonctionnel et sa clarté, assurant que le tableau original reste inchangé.
array = [1, 2, 3, 4, 5]
squared_array = array.map { |x| x**2 }
puts squared_array # Sortie : [1, 4, 9, 16, 25]
Méthode 2 : Utilisation de la méthode each
La méthode each
itère sur chaque élément mais ne renvoie pas directement un nouveau tableau. Pour élever au carré les éléments en utilisant each
, un nouveau tableau doit être créé et peuplé dans la boucle. Ceci est moins concis que l’utilisation de map
.
array = [1, 2, 3, 4, 5]
squared_array = []
array.each { |x| squared_array << x**2 }
puts squared_array # Sortie : [1, 4, 9, 16, 25]
Méthode 3 : Utilisation de each_with_index
each_with_index
fournit à la fois l’élément et son index pendant l’itération. Bien que ce ne soit pas strictement nécessaire pour l’élévation au carré, c’est utile pour les opérations dépendant à la fois de la valeur et de la position.
array = [1, 2, 3, 4, 5]
squared_array = []
array.each_with_index { |x, index| squared_array << x**2 }
puts squared_array # Sortie : [1, 4, 9, 16, 25]
Méthode 4 : Utilisation de inject
La méthode inject
(aussi appelée reduce
) accumule un résultat sur le tableau. Bien que puissante, elle est moins intuitive pour une simple élévation au carré comparée à map
et ajoute une complexité inutile.
array = [1, 2, 3, 4, 5]
squared_array = array.inject([]) { |result, x| result << x**2 }
puts squared_array # Sortie : [1, 4, 9, 16, 25]
Conclusion
Pour élever au carré les éléments d’un tableau, la méthode map
offre la solution la plus élégante et efficace. Sa concision et son style fonctionnel en font le choix préféré. Bien que d’autres méthodes fonctionnent, elles sont moins appropriées en raison de la complexité ou de la verbosité ajoutées.
FAQ
Q : Puis-je modifier le tableau original ? R : Modifier le tableau original sur place est possible, mais créer un nouveau tableau est généralement recommandé pour une meilleure clarté du code et pour éviter les effets secondaires non intentionnels.
Q : Qu’en est-il des éléments non numériques ? R : Élever au carré des éléments non numériques provoquera une TypeError
. Utilisez des méthodes comme select
pour filtrer les éléments non numériques avant de les élever au carré.
Q : Y a-t-il des différences de performance ? R : Pour les grands tableaux, de petites différences de performance peuvent exister, mais map
est généralement hautement optimisé. Les différences sont généralement négligeables sauf lorsqu’on traite d’ensembles de données extrêmement volumineux.