如何在TCL中打印下面的输出

时间:2017-10-29 17:36:45

标签: tcl

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

将Result1 = $ result1

将Result2 = $ result2

将Result3 = $ result3

放入

由于$ result2是一个值,我需要它只与$ result2完全相同。

1 个答案:

答案 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]"
}

关联数组很容易使用,但它们更难以传递给程序。字典是一流的对象