71 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <HTML><HEAD><TITLE>Built-In Commands - foreach manual page</TITLE></HEAD><BODY>
 | |
| <H3><A NAME="M2">NAME</A></H3>
 | |
| foreach - Iterate over all elements in one or more lists
 | |
| <H3><A NAME="M3">SYNOPSIS</A></H3>
 | |
| <B>foreach </B><I>varname list body</I><BR>
 | |
| <B>foreach </B><I>varlist1 list1</I> ?<I>varlist2 list2 ...</I>? <I>body</I><BR>
 | |
| <H3><A NAME="M4">DESCRIPTION</A></H3>
 | |
| The <B>foreach</B> command implements a loop where the loop
 | |
| variable(s) take on values from one or more lists.
 | |
| In the simplest case there is one loop variable, <I>varname</I>,
 | |
| and one list, <I>list</I>, that is a list of values to assign to <I>varname</I>.
 | |
| The <I>body</I> argument is a Tcl script.
 | |
| For each element of <I>list</I> (in order
 | |
| from first to last), <B>foreach</B> assigns the contents of the
 | |
| element to <I>varname</I> as if the <B><A HREF="../TkCmd/lindex.htm">lindex</A></B> command had been used
 | |
| to extract the element, then calls the Tcl interpreter to execute
 | |
| <I>body</I>.
 | |
| <P>
 | |
| In the general case there can be more than one value list
 | |
| (e.g., <I>list1</I> and <I>list2</I>),
 | |
| and each value list can be associated with a list of loop variables
 | |
| (e.g., <I>varlist1</I> and <I>varlist2</I>).
 | |
| During each iteration of the loop
 | |
| the variables of each <I>varlist</I> are assigned
 | |
| consecutive values from the corresponding <I>list</I>.
 | |
| Values in each <I>list</I> are used in order from first to last,
 | |
| and each value is used exactly once.
 | |
| The total number of loop iterations is large enough to use
 | |
| up all the values from all the value lists.
 | |
| If a value list does not contain enough
 | |
| elements for each of its loop variables in each iteration,
 | |
| empty values are used for the missing elements.
 | |
| <P>
 | |
| The <B><A HREF="../TkCmd/break.htm">break</A></B> and <B><A HREF="../TkCmd/continue.htm">continue</A></B> statements may be
 | |
| invoked inside <I>body</I>, with the same effect as in the <B><A HREF="../TkCmd/for.htm">for</A></B>
 | |
| command.  <B>Foreach</B> returns an empty string.
 | |
| <H3><A NAME="M5">EXAMPLES</A></H3>
 | |
| The following loop uses i and j as loop variables to iterate over
 | |
| pairs of elements of a single list.
 | |
| <PRE>set x {}
 | |
| foreach {i j} {a b c d e f} {
 | |
|     lappend x $j $i
 | |
| }
 | |
| # The value of x is "b a d c f e"
 | |
| # There are 3 iterations of the loop.</PRE>
 | |
| <P>
 | |
| The next loop uses i and j to iterate over two lists in parallel.
 | |
| <PRE>set x {}
 | |
| foreach i {a b c} j {d e f g} {
 | |
|     lappend x $i $j
 | |
| }
 | |
| # The value of x is "a d b e c f {} g"
 | |
| # There are 4 iterations of the loop.</PRE>
 | |
| <P>
 | |
| The two forms are combined in the following example.
 | |
| <PRE>set x {}
 | |
| foreach i {a b c} {j k} {d e f g} {
 | |
|     lappend x $i $j $k
 | |
| }
 | |
| # The value of x is "a d e b f g c {} {}"
 | |
| # There are 3 iterations of the loop.</PRE>
 | |
| <H3><A NAME="M6">SEE ALSO</A></H3>
 | |
| <B><A HREF="../TkCmd/for.htm">for</A></B>, <B><A HREF="../TkCmd/while.htm">while</A></B>, <B><A HREF="../TkCmd/break.htm">break</A></B>, <B><A HREF="../TkCmd/continue.htm">continue</A></B>
 | |
| <H3><A NAME="M7">KEYWORDS</A></H3>
 | |
| <A href="../Keywords/F.htm#foreach">foreach</A>, <A href="../Keywords/I.htm#iteration">iteration</A>, <A href="../Keywords/L.htm#list">list</A>, <A href="../Keywords/L.htm#looping">looping</A>
 | |
| <HR><PRE>
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1993 The Regents of the University of California.
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1994-1996 Sun Microsystems, Inc.
 | |
| <A HREF="../copyright.htm">Copyright</A> © 1995-1997 Roger E. Critchlow Jr.</PRE>
 | |
| </BODY></HTML>
 | 
