JAVA 因简洁而美丽,因有效而动人 善待JAVA这颗种子的人,必将得到她的福荫

tcl 语法之分组替换注意点

上一篇 / 下一篇  2009-05-17 20:20:13 / 个人分类:Tcl

要点
1:一种常见的错误是在使用花括号或双引号进行分组时忘记在变元之间插入空格符。因为空白符用作变元的分割符,而花括号和引号只提供分组的功能。如果你忘记了这些空格,就会出现“在封闭的花括号或双引号之后发现非期望的字符”之类的错误。由于}{之间缺少空格,所以下面的代码是错误的:
if {$x > 1}{puts "x=$x"}
2:双引号只有在空白符之后出现时才被用于分组,这也就是说你可以将双引号包含在一个分组当中而无须使用反斜杠引用。这要求要有花括号或空白符来界定这个分组。不推荐使用这种难懂的功能,不过看其来会是下面这个样子:
set silly a"b
3:当使用双引号进行分组时,花括号的特殊作用将被关闭。替换会在双引号所括起来的分组中的任何地方发生。下一条命令中,变量依然被替换掉了:
set x xvalue
set y " foo {$x} bar"
=>foo {xvlue} bar
4:当使用双引号进行分组时,其中的内嵌命令仍然可以使用双引号进行分组。
puts "result [format "%f %f " $x $y ]"
5:用作命令替换的方括号之间的空白符不是必须的。出于分组的考虑,解释器会把方括号之间的任何内容都当做当前分组的一部分。下面的代码将x设置为两条命令结果的连接,原因就是]与[之间没有空格。
Set x [cmd1][cmd2]
6:当使用花括号或双引号进行分组时,换行符和分号将被忽略。它们会像其它字符一样包括在分组字符中。下面的代码将x设置为包含换行符的字符串。
set x "This is line one.
       This is line two.
       This is lien three."
7:在进行命令替换过程中,换行符与分号的作用就是作为命令终止符。如果你有一条很长的嵌套在方括号中的命令,而且想在另一行上接续这条命令的话,就请在换行符前插入一个反斜杠。
set totalLength [expr [string length $one ] + \
                [string length $two ] ]
 
8:当一个美元符号后面跟的是除了字母数字下划线或左小括号之外的其他内容时,它就会被当做一个纯粹的美元符号,下面的代码将x设置为单一字符$
set x $
 
 

TAG: Tcl tcl

 

评分:0

我来说两句

Open Toolbar