foreach循环变量在作为静态变量执行的函数中

时间:2016-01-20 06:14:05

标签: tcl

在我的tcl代码中,我在一个函数中执行了一个foreach循环。在函数的每次迭代中,循环迭代器充当C语言中的静态变量而不是局部变量。

foreach dev_no $tmp_port {
        puts "value of dev_no is $dev_no" 

每次执行函数时,变量dev_no都会递增1而不是从0开始。因此循环无法执行。

2 个答案:

答案 0 :(得分:1)

有关foreach循环结构的说明,请参阅http://www.tcl.tk/man/tcl8.6/TclCmd/foreach.htm

在你的代码中,dev_no不会递增,但它会遍历变量tmp_port(假设它是一个列表变量)。

答案 1 :(得分:1)

我想你可能想要a for loop

这是通过$ tmp_port循环每个数字0的代码:

for {set dev_no 0} {$dev_no <= $tmp_port} {incr dev_no} {
        puts "value of dev_no is $dev_no"
}

例如,如果tmp_port为4,则输出:

value of dev_no is 0
value of dev_no is 1
value of dev_no is 2
value of dev_no is 3
value of dev_no is 4