我们可以在tcl中使用这样的foreach循环吗?

2 foreach tcl

我有两个清单:

set lista {5 6}
set listb {8 9}
Run Code Online (Sandbox Code Playgroud)

以下代码用于循环两个列表:

foreach listaelement listbelement $lista $listb {
    puts $listaelement &listbelement 
}
Run Code Online (Sandbox Code Playgroud)

我们如何使用foreach来实现输出:
lista中的第一个元素,listb中的
第一个元素,lista中的
第一个元素,listb中的
第二个元素,listb中的第二个元素,listb中的第二个元素,listb中的第一个元素,lista中的第二个元素,listb中的第二个元素,

5 8
5 9
6 8
6 9

Jac*_*son 6

只是嵌套循环并使用-nonewline应该给出你想要的输出:

foreach listelementa $lista {
   foreach listelementb $listb {
      puts -nonewline "$listelementa  $listelementb  "
   }
}
puts ""
Run Code Online (Sandbox Code Playgroud)

注意:您需要在puts语句中使用引号来停止Tcl将第一个参数解释为通道ID.

Tcl允许您在foreach语句中引用多个列表

foreach listelementa $lista listelementb $listb {
    puts -nonewline "$listelementa  $listelementb  "
}
puts ""
Run Code Online (Sandbox Code Playgroud)

然而,这给出5 8 6 9了它的输出 - 而不是你需要的.

编辑:我很确定当我回答输出被格式化为1行的问题时,如果你真的想要每行1行,那么你不需要-nonewlineon puts和尾随空格和final puts也可以去.