for { set i 0.05 } { $i < 0.5 } { set i [expr { $i+0.05 } ] } {
puts "I inside first loop: $i"
}
当我在上面的代码行上运行时,我会得到以下错误 错误:缺少近括号
这里有什么问题?
答案 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#中有相同的问题,并且......