700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 双引号与花括号

双引号与花括号

时间:2021-04-30 15:28:17

相关推荐

双引号与花括号

在Tcl中,可通过双引号“”和花括号{}将多个单词包括分隔符(例如:换行符和空格)和置换符(例如:美元符号$、方括号[]和反斜杠)等特殊字符组成一组,作为一个参数处理;区别在于双引号内的置换正常进行,而花括号内的置换有可能会被阻止,如下图所示:

变量s被赋值为Hello World,注意这里通过双引号避免了空格被当作分隔符处理。第一个puts命令使用了双引号,可以看到所有置换都随之发生;第二个puts命令使用了花括号,相应的内部置换均被阻止;

双引号另一常用情形是出现在嵌套命令中,且嵌套的命令是外层命令参数的一部分。例如上图中的第一条puts命令,内部嵌套了string length命令,而string length命令的返回值是puts命令参数的一部分。如果仅仅是命令嵌套,就不需要双引号,如下图所示:

给变量赋值时,也可以通过花括号使特殊字符被当作普通字符处理。如下图所示。在这个例子中,花括号阻止了$置换。如果将花括号替换为双引号则会报错:

如果在一个脚本中同时使用双引号和花括号会是什么结果呢?看下面这个例子。给变量b赋值时使用了反斜杠置换,给变量c赋值时使用了双引号加花括号,其中双引号在最外层,给变量d赋值时使用了花括号加双引号,其中花括号在最外层,对比下来可以得出这样的结论:在同时使用双引号和花括号时,最外层的做主:

对于花括号,如前文所述“花括号内的置换有可能会被阻止”,这是因为花括号的功能稍微复杂一些,但总的来说遵循两个原则:第一个原则是如果花括号是用做置换操作,则其内部的置换操作会被阻止;第二个原则是如果花括号用做界限符,如过程定义时用做过程体的边界、if语句、循环语句(for和while)、switch语句等的边界以及数学表达式中时,其内部的置换操作不会被阻止;

如果需要双引号或花括号作为普通字符出现在字符串中时,可通过反斜杠\置换,或者通过双引号和花括号的嵌套使用实现特定功能,如下图所示:

结论:

-双引号实现参数分组,不阻止置换;

-花括号实现参数分组,阻止内部置换;

-同时使用双引号和花括号实现参数分组时,是否置换由最外层符号决定

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。