我正在学习Tcl / Tk,并对tcl中花括号的使用感到困惑。
对我来说,它似乎既用于指示范围又声明字符串!这是一个错误(或功能)?
我的解释是否正确?
答案 0 :(得分:27)
简而言之,
在proc
定义中使用花括号的事实不是强制性的。这是将脚本作为参数传递给proc而不进行插值的最方便的方法。
这些是等效的
proc add3 {a b c} {
return [expr {$a + $b + $c}]
}
和
proc add3_weird [list a b c] "return \[expr {\[set a] + \[set b] + \[set c]}]"
一旦你内化了Tcl引用,你就会意识到Tcl的真正灵活性。
答案 1 :(得分:4)
在回答Toddius Zho的评论时,我已经看到了一些问题(并且让我自己),为什么在使用变量时会使用花括号? $ {VAR}
在TCL中,标准标量变量可以由任何字符组成。 但是,变量替换运算符“$”假定您使用的是字母数字字符和下划线(加上名称空间分隔符“::”)
因此,如果变量设置为非字母数字字符,例如“!”,则在尝试替换变量时TCL会出错。
% set myvar! 123
123
% puts $myvar!
can't read "myvar": no such variable
使用花括号替换运算符不会出错:
% set myvar! 123
123
%puts ${myvar!}
123
这是因为TCL不对花括号内定义的任何内容执行替换/插值。
答案 2 :(得分:-3)
花括号将字组合在一起成为参数。你可以通过谷歌搜索在互联网上找到大量的tcl东西。这是一个intro
答案 3 :(得分:-3)
man n Tcl
这是Tcl解释器的手册页!阅读。再读一遍!你甚至可以考虑去一个安静的地方并大声读出来。这会妨碍你阅读太快。每一个字母都很重要。
一旦你发现自己“引用地狱”,请回到本文档并再次阅读。