如何在TCL中打印以下输出

如何在TCL中打印以下输出,tcl,Tcl,如何在TCL的for循环中打印以下输出 puts Result1=$Result1 puts Result2=$Result2 puts Result3=$Result3 因为$result2是一个值,所以我只需要它与$result2完全相同 foreach n {1 2 3} { puts [format {puts Result%d=$result%d} $n $n] # or puts "puts Result$n=\$result$n" } 您需要记住,当Tc

如何在TCL的for循环中打印以下输出

puts Result1=$Result1

puts Result2=$Result2

puts Result3=$Result3

因为$result2是一个值,所以我只需要它与$result2完全相同

foreach n {1 2 3} {
    puts [format {puts Result%d=$result%d} $n $n]
    # or
    puts "puts Result$n=\$result$n"
}

您需要记住,当Tcl解析命令时,它只执行一轮替换(按顺序)

当您编写
放入“Result$i是$Result$i”
i
为1时,Tcl将首先替换$i以形成
$result1
。它将
结果
视为一个单独的变量:

set result1 foo
set result2 bar
set result3 baz
foreach n {1 2 3} {
    puts "Result $n is $result$n"
}
如果要使用这样的变量名,首先必须形成正确的变量名,然后获取值。为此,可以使用带有单个参数的
set
命令:

foreach n {1 2 3} {
    puts "Result $n is [set result$n]"
}
但是,使用数组比使用这样的“动态”变量名更容易。请选择以下选项之一:

# an associative array
set result(1) foo
set result(2) bar
set result(3) baz
foreach n {1 2 3} {
    puts "Result $n is $result($n)"
}

# or a dictionary
unset result
set result [dict create 1 foo 2 bar 3 baz]
foreach n {1 2 3} {
    puts "Result $n is [dict get $result $n]"
}

关联数组使用起来很简单,但它们更难传递到过程中。字典是一流的对象

非常感谢jackman的回复,但我想要$result1,2,3的内容,它与下面的代码一起工作对于{set i 1}{$i++>++>Result1=0 Result2=0 Result3=0无论如何,非常感谢您提供的初始代码。我有一些疑问,请您帮助澄清我的疑问,之前我尝试了以下代码{set i 1}{$我非常感谢杰克曼的详细解释。这对我帮助很大。
Result 1 is foo
Result 2 is bar
Result 3 is baz
# an associative array
set result(1) foo
set result(2) bar
set result(3) baz
foreach n {1 2 3} {
    puts "Result $n is $result($n)"
}

# or a dictionary
unset result
set result [dict create 1 foo 2 bar 3 baz]
foreach n {1 2 3} {
    puts "Result $n is [dict get $result $n]"
}