À retenir
- Il déballe les éléments d'un conteneur (tableau, objet, liste).
- Il est souvent représenté par trois points consécutifs
.... - Il facilite grandement la manipulation de données sans altérer la source originale.
L'opérateur de diffusion est un symbole mathématique ou informatique qui permet d'extraire individuellement tous les éléments d'une collection (comme une liste ou un tableau) pour les utiliser séparément. C'est comme si vous ouvriez un sac de billes pour les étaler une par une sur le sol plutôt que de manipuler le sac entier.
Étymologie
Traduction directe de l'anglais spread operator. Le terme « diffusion » évoque l'idée d'éparpiller ou de distribuer les éléments d'un ensemble. Popularisé principalement par le langage JavaScript avec la mise à jour ES6 en 2015.
Exemples d'usage
- En JavaScript :
const nouveauTableau = [...ancienTableau, 4, 5];permet de créer une copie de l'ancien tableau en y ajoutant deux éléments. - En Python : l'astérisque
*remplit ce rôle, par exempleprint(*[1, 2, 3])affichera 1 2 3 au lieu de [1, 2, 3]. - Dans l'appel d'une fonction :
maFonction(...mesArguments)pour passer chaque élément d'une liste comme un paramètre distinct.
Cas d'usage
On l'utilise principalement en développement web et logiciel pour copier des objets ou des tableaux sans modifier l'original (immuabilité), fusionner plusieurs sources de données, ou transformer une structure complexe en une liste d'arguments pour une fonction.
Bonnes pratiques
Attention à la copie superficielle (shallow copy) : si votre tableau contient d'autres objets, l'opérateur de diffusion ne copiera que la référence à ces objets, pas les objets eux-mêmes. Évitez aussi de l'utiliser sur des tableaux extrêmement volumineux (plusieurs dizaines de milliers d'entrées) dans des fonctions, car cela peut saturer la pile d'appels (stack overflow).
Synonymes
Antonymes
Conseil
Pour bien le maîtriser, pratiquez la fusion de deux tableaux et la mise à jour d'un objet simple. C'est l'outil indispensable si vous apprenez des bibliothèques modernes comme React où l'on doit souvent copier des données pour mettre à jour l'interface.
Questions fréquentes
Quelle est la différence avec l'opérateur 'Rest' ?
Bien qu'ils utilisent le même symbole (...), le 'Spread' déballe une liste en éléments individuels, tandis que le 'Rest' rassemble plusieurs éléments isolés dans une seule liste.
Est-ce que cela fonctionne sur les objets ?
Oui, dans beaucoup de langages modernes comme JavaScript, on peut diffuser les propriétés d'un objet dans un nouvel objet pour le cloner ou le mettre à jour.