编程时 , foreach命令实现了一个循环,其中循环变量呈现来自一个或多个列表的值。 在最简单的情况下,有一个循环变量varname和一个list list ,它是要分配给varname的值列表。 body参数是一个Tcl脚本。 对于列表中的每个元素(从第一个到最后一个), foreach将元素的内容赋值给varname ,就好像lindex命令已经用于提取元素一样,然后调用Tcl解释器来执行主体 。
概要
foreach varname list body
foreach varlist1 list1 ? varlist2 list2 ... ? 身体
讨论
在一般情况下,可以有多个值列表(例如, list1和list2 ),并且每个值列表可以与一个循环变量列表(例如, varlist1和varlist2 )相关联。 在循环的每次迭代期间,每个varlist的变量都会从相应的列表中分配连续的值。 每个列表中的值按从头到尾的顺序使用,每个值只用一次。 循环迭代的总数足够大,可以用尽所有值列表中的所有值。 如果每个迭代中值列表中的每个循环变量都没有包含足够的元素,则会为缺少的元素使用空值。
break和continue语句可以在body中调用,效果与for命令相同。 结果返回一个空字符串。
例子
以下循环使用i和j作为循环变量来遍历单个列表的元素对。
set x {} foreach {ij} {abcdef} {lappend x $ j $ i}#x的值是“badcfe”#循环有3次迭代。下一个循环使用i和j并行迭代两个列表。
set x {} foreach i {abc} j {defg} {lappend x $ i $ j}#x的值是“adbecf {} g”#循环有4次迭代。下面的例子将这两种形式组合在一起。
set x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k}#x的值是“adebfgc {} {}”#循环有3次迭代。笔记
几个相关的命令与foreach一起工作,包括:
- 为(n)的
- 而(n)的
- 休息(N)
- 继续(N)