Itérateur (patron de conception) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Itérateurs implicites

Des langages à objets comme Perl et Python fournissent un moyen « interne » d'itérer sur les éléments d'un conteneur sans introduire explicitement un itérateur. Cela est souvent implanté par une structure de contrôle for-each, comme dans les exemples suivants :

          # Tcl: itérateur implicite          foreach val $list {              puts stdout $val          }      
          # Perl: itérateur implicite          foreach $val (@list) {              print "$val\n";          }      
          # Python, itérateur implicite          for Value in List:              print Value      
          // PHP, itérateur implicite          foreach ($list as $value)              print $value;      
          // Java, J2SE 5.0, itérateur implicite          for (Value v : list)              System.out.print(v);      
          // C#, itérateur implicite          foreach (object obj in list)              Console.WriteLine(obj );                 // C#, itérateur explicite avec un yield          foreach (object obj in IndicesPairs() )              Console.WriteLine(obj);                  // ou IndicesPairs() est une méthode          IEnumerable IndicesPairs() {              for(int i=0; i<tableau.Length; i++)                  if(i%2==0)                       yield return tableau[i];          }      
        # Ruby, itérateur de bloc, (yield)            list.each do |value|               puts value            end        # ou each est une méthode de Array tel que:            def each               for i in 0...size                  yield(self[i])               end            end      

Attention, en Javascript, on itère pas directement sur les objets mais sur leur nom

          // Javascript, itérateur implicite          for(nom in Object) {              var valeur =  Object[nom];              alert(Value+" = "+valeur ]);          }      

Le langage C++ dispose également de la fonction template std::for_each() qui permet des itérations implicites similaires, mais requiert toujours de fournir des objets itérateurs en paramètres d'entrée.

Remarque : le Ruby, le Python et le C# à partir de sa version 2.0, offrent via yield un outil spécifique pour construire des itérateurs.

Le langage Php implémente les itérateurs depuis sa version 5 via la SPL.

Page générée en 0.058 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise