在 tcl 命令中使用双引号而不是大括号时到底有什么不同。例如:
regsub "$something" $var1 "$something2" var1
Run Code Online (Sandbox Code Playgroud)
对比
regsub {$something} $var1 {$something2} var1
Run Code Online (Sandbox Code Playgroud)
不过,问题不仅限于 regsub。即使在使用赋值给变量时,set我也看不出有什么区别。
双引号和花括号用于将单词组合为一个参数。双引号和大括号之间的区别在于引号允许在组中发生替换,而大括号阻止替换。此规则适用于命令、变量和反斜杠替换。
用双引号和大括号分组。
set s Hello
=> Hello
puts stdout "The length of $s is [string length $s]."
=> The length of Hello is 5.
puts stdout {The length of $s is [string length $s].}
=> The length of $s is [string length $s].
Run Code Online (Sandbox Code Playgroud)
这里,Tcl 解释器对 puts 的第二个参数进行变量和命令替换。在第三个命令中,禁止替换,因此字符串按原样打印。
在实践中,当参数的替换必须延迟到稍后(或根本不进行)时,使用花括号分组。示例包括循环、条件语句和过程声明。双引号在简单的情况下很有用,比如前面显示的 puts 命令。
参考: Tcl 和 Tk 中的实用编程
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |