如何在TCL中的for循环中打印以下输出
将Result1 = $ result1
将Result2 = $ result2
将Result3 = $ result3
放入由于$ result2是一个值,我需要它只与$ result2完全相同。
答案 0 :(得分:0)
foreach n {1 2 3} {
puts [format {puts Result%d=$result%d} $n $n]
# or
puts "puts Result$n=\$result$n"
}
你需要记住,当Tcl解析命令时,它只执行一轮替换(按given here的顺序排列)
当puts "Result $i is $result$i"
为1时写i
时,Tcl 不首先将$ i替换为$result1
。它会将result
视为单独的变量:
set result1 foo
set result2 bar
set result3 baz
foreach n {1 2 3} {
puts "Result $n is $result$n"
}
can't read "result": no such variable
如果要使用这样的变量名,首先必须形成正确的变量名,然后获取值。为此,您可以使用带有单个参数的set
命令:
foreach n {1 2 3} {
puts "Result $n is [set result$n]"
}
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]"
}
关联数组很容易使用,但它们更难以传递给程序。字典是一流的对象