如何修复错误:缺少tcl中的括号错误?

时间:2014-05-15 07:58:45

标签: tcl

for { set i 0.05 } { $i < 0.5 } { set i [expr { $i+0.05 } ] } {
    puts "I inside first loop: $i"
} 

当我在上面的代码行上运行时,我会得到以下错误 错误:缺少近括号

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

该代码“适用于我”。

% for { set i 0.05 } { $i < 0.5 } { set i [expr { $i+0.05 } ] } {
    puts "I inside first loop: $i"
} 
I inside first loop: 0.05
I inside first loop: 0.1
I inside first loop: 0.15000000000000002
I inside first loop: 0.2
I inside first loop: 0.25
I inside first loop: 0.3
I inside first loop: 0.35
I inside first loop: 0.39999999999999997
I inside first loop: 0.44999999999999996
I inside first loop: 0.49999999999999994

我猜你遇到问题的真实代码与它完全相同,并且它在某个地方缺少}。捕获这些东西的最好方法是使用程序员的编辑器进行括号匹配(他们几乎都这样做;我确定vim,emacs和Eclipse都这样做)并查看代码在哪里有一个括号(或括号或大括号)与你的期望不符。然后,您可以向内潜水,找到与您想要的不匹配的最里面的支架;它可能是它的缺失对。

仅供参考,Tcl对{ ... }匹配非常严格,对[ ... ]匹配非常严格,( ... {{{{ {1}}匹配(尽管表达式和数组变量处理可能不一致)。


你的循环会更好地写成:

)

甚至:

for {set ii 1} {[set i [expr {$ii * 0.05}]] < 0.5} {incr ii} {
    puts "I inside first loop: $i"
}

原因与计算机执行浮点运算的方式有关,而对Tcl来说并不特别;您在C和C ++以及Java和C#中有相同的问题,并且......