【问题标题】:how to fix error:missing close brace error in tcl?如何修复错误:tcl 中缺少右括号错误?
【发布时间】:2014-05-15 07:58:44
【问题描述】:
for { set i 0.05 } { $i < 0.5 } { set i [expr { $i+0.05 } ] } {
    puts "I inside first loop: $i"
} 

当我运行以上代码行时,我会得到以下错误 错误:缺少右大括号

这里有什么问题?

【问题讨论】:

    标签: tcl


    【解决方案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 对 {} 匹配非常严格,对 [] 匹配相当严格,而且对于 () 匹配通常很容易(尽管表达式和数组变量处理可能不同意)。


    你的循环最好写成:

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

    甚至:

    for {set ii 1} {$ii < 10} {incr ii} {
        set i [expr {$ii / 20.0}]
        puts "I inside first loop: $i"
    }
    

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

    【讨论】:

    • 就像 Donal 说的,你的部分代码没有问题。可能会尝试使用 nagelfar 工具检查您的整个脚本。 nagelfar.berlios.de
    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 2016-10-23
    相关资源
    最近更新 更多