Tcl技巧与bug汇总(一)

missing close-brace

Question:

error: missing close-brace: possible unbalancd brace in comment

直译是缺少括号,一般来说检查一下括号是否匹配就可以。但Tcl中,被注释的括号有时也会被算入。如下:

set namelist1 [list a b c d e]
set namelist2 [list 1 2 3 4 5]
foreach name $namelist1 {
#foreach name $namelist2 {
    puts -nonewline $name
}

在这段程序中,我更换了需要遍历的列表,所以将之前的foreach语句注释掉。这种情况下就会报错。但神奇的是,如果被注释的括号不在其他括号内部就不会报错:

set namelist1 [list a b c d e]
set namelist2 [list 1 2 3 4 5]
#foreach name $namelist2 {
foreach name $namelist1 {
    puts -nonewline $name
}

Solution:

建议直接将注释删掉,再或者在注释中也保持括号匹配。如下,注释末尾增加一个}就不会报错。

set namelist1 [list a b c d e]
set namelist2 [list 1 2 3 4 5]
foreach name $namelist1 {
#foreach name $namelist2 {}
    puts -nonewline $name
}
(0)

相关推荐