TCL在新线上使用elseif

TCL在新线上使用elseif,tcl,Tcl,当语句块很短时,我喜欢在多行中构造if{}{{}{}elseif{}{},如下所示 if {cond1} {do1} elseif {cond2} {do2} elseif {cond3} {do3} 但TCL不让我这么做。给出:无效的命令名“elseif” 当我将“do”语句周围的大括号打开成多行时,它就起作用了,但这看起来太难看了 if {cond1} {do1 } elseif {cond2} {do2 } elseif {cond3} {do3} TCL的根本问题是什么,阻止它在if

当语句块很短时,我喜欢在多行中构造if{}{{}{}elseif{}{},如下所示

if {cond1} {do1}
elseif {cond2} {do2}
elseif {cond3} {do3}
但TCL不让我这么做。给出:无效的命令名“elseif”

当我将“do”语句周围的大括号打开成多行时,它就起作用了,但这看起来太难看了

if {cond1} {do1
} elseif {cond2} {do2
} elseif {cond3} {do3}
TCL的根本问题是什么,阻止它在if之后的下一行识别elseif

谢谢,
Gert

换行符终止当前命令。要使命令在下一行继续,必须转义或引用换行符

如果换行符前面直接有反斜杠,则反斜杠、换行符以及顺序后面的所有制表符和空格将替换为单个空格字符

if {cond1} {do1} \
elseif {cond2} {do2} \
elseif {cond3} {do3} \
else {do4}
如果换行符位于大括号内,则它没有语法功能。它只是字符串中由大括号括起并传递给命令的另一个字符。当您需要将包含多个命令的脚本传递给例如
if
命令时,这非常有用:脚本将在命令中重新解释,这些换行符将在那里恢复其功能

if {cond1} {do1
} elseif {cond2} {do2
} elseif {cond3} {do3
} else {do4}
典型的Tcl风格是使用脚本参数编写命令,如下所示:

if {cond1} {
    do1
} elseif {cond2} {
    do2
} elseif {cond3} {
    do3
} else {
    do4
}
这种视觉风格并不符合每个人的口味,但人们可以习惯它


文档:

当您处理更复杂的条件和包含5或6个单词的命令时,典型的Tcl样式就更有意义了。