我想将以下c代码转换为TCL。
int a[10],b[10];
int n=20
for (i=1,j=1; i<=n; i+=2,j++)
{
b[j]=a[i];
}
我需要将此循环更改为TCL,我不想在TCL中使用foreach功能... TCL for loop结构是否允许两个循环变量???
答案 0 :(得分:4)
您是否看过discussion here:
set n 6
for {
set i 1
set j 1
} {
$i < $n
} {
incr i
incr j
} {
puts "$i $j"
}
答案 1 :(得分:2)
这并不能完全满足您的需求,但考虑到您来自C,您需要让目标数组开始......它可能会实现您的实际目标。
foreach
循环可以将名称列表作为存储变量。每个名称都从输入列表中获取一个值。因此,您可以使用它每次迭代输入列表中的多个值:
set result {}
foreach {x1 x2} {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20} {
lappend result $x1
}
puts $result
# 1 3 5 7 9 11 13 15 17 19
与您的问题完全无关,但也很好,它也可以采用多个变量名称和列表:
set result {}
foreach {a1 a2} {1 2 3 4 5 6} b {A B C} {
lappend result $a1 $b $a2 -
}
puts $result
# 1 A 2 - 3 B 4 - 5 C 6