Concept

Générateur (informatique)

Résumé
En informatique, un générateur est une routine non transparente référentiellement, généralement sans argument. Comme son nom l'indique, elle sert à créer de nouveaux objets. Parmi les générateurs les plus classiques, on trouve les générateurs de nombres aléatoires. Un générateur suit le patron de conception itérateur, et permet en pratique de retourner un gros volume de données sans surcharger la mémoire vive, en la découpant en petits paquets. Certains générateurs parcourent virtuellement une liste infinie, définie algorithmiquement. De tels générateurs sont appelés compréhensions de listes. Une fonction renvoyant tour à tour les éléments de la suite de Fibonacci ou tous les nombres premiers serait un tel générateur. Généralement un générateur est implémenté avec la fonction yield : une instruction de programmation qui sert à imposer la constructivité d'une fonction. Son utilisation dans une fonction permet de retourner un générateur. Elle est plus souvent présente dans les langages à haut niveau comme Python, Ruby ou le C#. En C#, le mot-clé yield est suivi de return pour retourner la valeur suivante ou break pour interrompre l'itération. using System.Collections.Generic; public class Mots { // Tableau contenant des mots : public string[] mots; // Constructeur public Mots(params string[] mots) { this.mots = mots; } // Énumérer tous les mots jusqu'à trouver // le mot contenu dans le paramètre dernier (exclu) // ou la fin du tableau. public IEnumerable TousLesMotsJusquA(string dernier) { foreach(string mot in mots) if (mot.Equals(dernier)) yield break; // fin prématurée de l'itération else yield return mot; // élément de l'itération // fin normale de la boucle d'itération } } public class TestProgram { public static void Main() { Mots fruits = new Mots( "pomme", "poire", "abricot", "fraise", "kiwi" ); foreach( string fruit in fruits.TousLesMotsJusquA("fraise") ) Console.WriteLine( fruit ); } } Les générateurs sont apparus avec ES6 (en 2013). function* fourInts() { let int = 0; while (int < 4) { yield int; int++; } } const gen = fourInts(); // création alert(gen.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.