【发布时间】:2010-02-03 16:47:45
【问题描述】:
我正在学习 Tcl/Tk,但对 tcl 中花括号的使用感到困惑。
对我来说,它似乎既可以用来表示范围,也可以用来声明字符串!这是一个错误(或功能)吗?
我的解释正确吗?
【问题讨论】:
标签: tcl
我正在学习 Tcl/Tk,但对 tcl 中花括号的使用感到困惑。
对我来说,它似乎既可以用来表示范围,也可以用来声明字符串!这是一个错误(或功能)吗?
我的解释正确吗?
【问题讨论】:
标签: tcl
简而言之,
在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 是多么的灵活。
【讨论】:
set index 4; puts "this is the ${index}th index"
在回复 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 不对大括号内定义的任何内容执行替换/插值。
【讨论】:
花括号将单词组合在一起成为参数。你可以通过谷歌搜索在互联网上找到很多 tcl 的东西。这是intro
【讨论】:
man n Tcl
这是 Tcl 解释器的手册页!阅读。再读一遍!你甚至可以考虑去一个安静的地方大声读出来。这会阻碍你阅读过快。每个字母都很重要。
一旦您发现自己陷入“引用地狱”的境地,请返回此文档并再次阅读。
【讨论】: