For loop 更正我的输出的Tcl脚本

For loop 更正我的输出的Tcl脚本,for-loop,tcl,For Loop,Tcl,我已经编写了一个Tcl代码,它给出了如下输出。我非常接近我需要的东西。 代码: 相反,我希望代码能给出如下输出: Row1 A B C D pattern number = 4 pattern1 A pattern2 B pattern3 C pattern4 D Row2 P Q R S pattern number = 4 pattern5 P pattern6 Q pattern7 R pattern8 S Row3 W X Y pattern number = 3 pattern9

我已经编写了一个Tcl代码,它给出了如下输出。我非常接近我需要的东西。 代码:

相反,我希望代码能给出如下输出:

Row1 A B C D
pattern number = 4
pattern1 A
pattern2 B
pattern3 C
pattern4 D

Row2 P Q R S
pattern number = 4
pattern5 P
pattern6 Q
pattern7 R
pattern8 S

Row3 W X Y 
pattern number = 3
pattern9 W
pattern10 X
pattern11 Y
请建议我该怎么办

  • 使用
    foreach
  • 不要重置变量
  • 因此,您的代码变成:

    set rownr 0
    set patnr 0
    foreach row $sub_list {
        incr rownr
        puts "Row$rownr $row"
        puts "pattern number = [llength $row]"
        foreach pattern $row {
            incr patnr
            puts "pattern$patnr $pattern"
        }
    }
    
    如果您想进一步处理此问题,请告诉我您的需要。

    (我假设您真的不想动态生成变量名。)

    。。。你没有提供任何代码。您不需要重置要附加到模式的变量,但如果您不提供任何代码,我们将无法帮助您。PherricOxide:我已经添加了代码供您参考正确的钱约翰尼斯,谢谢!现在我得到了我需要的。在上述示例中,3是硬编码的。实际上,该值来自一个变量。但在您的代码中,我甚至没有指定它,它仍然可以正常工作。
    Row1 A B C D
    pattern number = 4
    pattern1 A
    pattern2 B
    pattern3 C
    pattern4 D
    
    Row2 P Q R S
    pattern number = 4
    pattern5 P
    pattern6 Q
    pattern7 R
    pattern8 S
    
    Row3 W X Y 
    pattern number = 3
    pattern9 W
    pattern10 X
    pattern11 Y
    
    set rownr 0
    set patnr 0
    foreach row $sub_list {
        incr rownr
        puts "Row$rownr $row"
        puts "pattern number = [llength $row]"
        foreach pattern $row {
            incr patnr
            puts "pattern$patnr $pattern"
        }
    }