1
edit
Changes
Iterator
,→References
=== Implicit Iterators ===
Some object-oriented languages have iterator support included within the language, without having to implement an explicit iterator object.Some of these language include: * C#* Java (After 5.0)* Python* PERL === UML === Design class diagram in UML of the Iterator Pattern being used in a system. [[Image:Iterator1.png]] == Code Samples == The following are samples of code from C#, Java, Python, and PERL, displaying how they use their implicit iterators. === C# === // C#, implicit iteration foreach (Value v in list) Console.WriteLine(v); === Java === // Java, J2SE 5.0, implicit iteration for (Value v : list) System.out.print(v); === Python === # Python, implicit iteration for Value in List: print Value === PERL === # Perl, implicit iteration foreach $val (@list) { print "$val\n"; } == Examples == === C++ === This is a code snippet from a file called [http://www.google.com/codesearch?hl=en&q=show:3faa7gjspWs:MYoIVGFTT9Q:S6XmQxn_Gd8&sa=N&ct=rd&cs_p=http://gentoo.osuosl.org/distfiles/gnome-vfsmm-1.3.5.tar.gz&cs_f=gnome-vfsmm-1.3.5/libgnomevfs/libgnomevfsmm/transfer.cc transfer.cc], created by the Gnome VFS Development Team. This particular function, transfer_list, transfers a list of URI's from the source list to the target list. The source code repository can be found [http://www.google.com/codesearch?hl=en&q=show:7egWPqDRuQg:6mN6dZ6BKgU&sa=N&ct=rdp&cs_p=http://gentoo.osuosl.org/distfiles/gnome-vfsmm-1.3.5.tar.gz here]. void transfer_list(const Glib::StringArrayHandle& source_uri_list, const Glib::StringArrayHandle& target_uri_list, TransferOptions options, ErrorMode error_mode, OverwriteMode overwrite_mode, const SlotProgress& slot) { typedef std::list< Glib::RefPtr<Uri> > uri_list; uri_list sources, targets; //Build lists of RefPtr<Uri>s from the strings: Glib::StringArrayHandle::const_iterator iter_target = target_uri_list.begin(); for(Glib::StringArrayHandle::const_iterator iter = source_uri_list.begin(); iter != source_uri_list.end(); ++iter) { if(iter_target != target_uri_list.end()) { sources.push_back( Uri::create(*iter) ); targets.push_back( Uri::create(*iter_target) ); iter_target++; } } transfer_list_uris(sources, targets, options, error_mode, overwrite_mode, slot); } == References == * [http://en.wikipedia.org/wiki/Iterator Wikipedia entry on Iterator]* [http://thor.info.uaic.ro/ Universitatea Alexandru Ioan Cuza]* [http://www.google.com/codesearch?hl=en&q=show:7egWPqDRuQg:6mN6dZ6BKgU&sa=N&ct=rdp&cs_p=http://gentoo.osuosl.org/distfiles/gnome-vfsmm-1.3.5.tar.gz Gnome VFS Development Source Code]