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.