了解大括号的用法

时间:2010-02-03 16:47:45

标签: tcl

我正在学习Tcl / Tk,并对tcl中花括号的使用感到困惑。

对我来说,它似乎既用于指示范围又声明字符串!这是一个错误(或功能)?

我的解释是否正确?

4 个答案:

答案 0 :(得分:27)

简而言之,

  • Tcl的大括号就像是sh的单引号 - 没有插值的单词(和行)。
  • Tcl的双引号就像是sh的双引号 - 允许插值。

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不对花括号内定义的任何内容执行替换/插值。

http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm

答案 2 :(得分:-3)

花括号将字组合在一起成为参数。你可以通过谷歌搜索在互联网上找到大量的tcl东西。这是一个intro

答案 3 :(得分:-3)

man n Tcl

这是Tcl解释器的手册页!阅读。再读一遍!你甚至可以考虑去一个安静的地方并大声读出来。这会妨碍你阅读太快。每一个字母都很重要。

一旦你发现自己“引用地狱”,请回到本文档并再次阅读。

有一个在线版本: http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm