作为静态变量执行的函数中的 foreach 循环变量
foreach loop variable in a function executing as a static variable
在我的 tcl 代码中,我有一个在函数中执行的 foreach 循环。在函数的每次迭代中,循环迭代器作为 C 语言中的静态变量而不是局部变量。
foreach dev_no $tmp_port {
puts "value of dev_no is $dev_no"
每次函数执行时,变量dev_no都会递增1,而不是从0开始。因此循环无法执行。
有关 foreach 循环构造的说明,请参阅 http://www.tcl.tk/man/tcl8.6/TclCmd/foreach.htm。
在您的代码中,dev_no 不会递增,但会遍历变量 tmp_port(假设它是一个列表变量)。
我想你可能想要 a for loop。
这里是循环遍历从 $tmp_port 到 $tmp_port 的每个数字的代码:
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
在我的 tcl 代码中,我有一个在函数中执行的 foreach 循环。在函数的每次迭代中,循环迭代器作为 C 语言中的静态变量而不是局部变量。
foreach dev_no $tmp_port {
puts "value of dev_no is $dev_no"
每次函数执行时,变量dev_no都会递增1,而不是从0开始。因此循环无法执行。
有关 foreach 循环构造的说明,请参阅 http://www.tcl.tk/man/tcl8.6/TclCmd/foreach.htm。
在您的代码中,dev_no 不会递增,但会遍历变量 tmp_port(假设它是一个列表变量)。
我想你可能想要 a for loop。
这里是循环遍历从 $tmp_port 到 $tmp_port 的每个数字的代码:
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