TCL在新行上使用elseif

时间:2015-02-19 19:47:40

标签: tcl

我喜欢在语句块很短的情况下在多行中构造if {} {} elseif {} {}。

if {cond1} {do1}
elseif {cond2} {do2}
elseif {cond3} {do3}

但是TCL不允许我这样做。给出:无效的命令名称" elseif"

当我打开围绕着'做'声明分成多行,但看起来很难看。

if {cond1} {do1
} elseif {cond2} {do2
} elseif {cond3} {do3}

TCL的根本问题是什么阻止它在if之后识别下一行的elseif?

谢谢, 格特

1 个答案:

答案 0 :(得分:4)

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

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

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
}

这种视觉风格并不符合每个人的口味,但人们可以习惯它。

文档:Tcl