上期内容:变量置换
命令置换是Tcl的第二种置换形式。该置换以方括号[]形式体现。方括号中是另外一个Tcl命令。从这个角度而言,这实际上就是命令的嵌套。命令置换会导致某一个命令的所有或部分单词被另一个命令的结果所代替。如下图所示。命令expr会在解析set的单词时执行,expr的结果即字符串16成为命令set的第二个参数。
同时,命令置换时方括号中的脚本可以包含任意多条命令,命令之间用换行符或分号隔开。但是,方括号最终的返回值为方括号中最后一条命令的返回值。如下图所示,[]中有两个命令expr和set,通过分号隔开,最终y的值为最后一条命令set x的返回值。从代码风格的角度而言,并不建议在方括号中通过换行符或分号分割多条命令。
另外,命令置换是可以嵌套的,即在一个命令置换中还可以包含另一个命令置换。如下图所示。命令set中嵌套了命令expr,而expr中又嵌套了string length(该命令返回字符串的长度)。因此,在解析set的单词时,会首先解析expr,而解析expr时又会解析并执行string length。
结论:
-命令置换以方括号[]形式为标记
-命令置换可以嵌套
如果文章对你有收获,欢迎转发~