了解大括号的用法
我正在学习 Tcl/Tk,对 tcl 中花括号的使用感到困惑。
对我来说,它似乎既用于指示范围又用于声明字符串!这是一个错误(或功能)吗?
我的解释正确吗?
I'm learning Tcl/Tk and am confused on the usage of curly braces in tcl.
To me it seems to be used to both indicate scope and declare strings! Is this a bug (or feature)?
Is my interpretation correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
简而言之,
事实上,在
proc
定义中使用花括号并不是强制性的。这只是将脚本作为参数传递给 proc 而不进行插值的最方便的方法。它们是等价的
,
一旦您内部化了 Tcl 引用,您就会意识到 Tcl 是多么的灵活。
In a nutshell,
The fact that you use curly braces in a
proc
definition is not mandatory. It's just the most convenient way to pass a script as an argument to proc without interpolating.These are equivalent
and
Once you internalize Tcl quoting, you'll realize how truly flexible Tcl can be.
在回复 Toddius Zho 的评论时,我看到了一些问题(并且自己提出了)为什么在使用变量时使用大括号,例如 ${var}
在 TCL 中,标准标量变量可以由任何字符组成。
然而,变量替换运算符“$”假设您使用的是字母数字字符和下划线(加上名称空间分隔符“::”),
因此如果使用非字母数字字符(例如“!”)设置变量,则在尝试替换时TCL将出错替换变量。
使用大括号替换运算符不会出错:
这是因为 TCL 不会对大括号内定义的任何内容执行替换/插值。
http://www.tcl.tk/man/tcl8.5/TclCmd /Tcl.htm
In reply to Toddius Zho's comment, I've seen a few questions (and had them my self) why curly braces are used when using variables e.g. ${var}
In TCL a standard scalar variable can be comprised of any character.
However the variable substitution operator "$" assumes you are using alphanumeric characters and underscores (plus name space separators "::")
So if a variable is set with a non alphanumeric character, such as "!", TCL will error when attempting to substitute the variable.
Using curly brackets the substitution operator does not error:
This is because TCL does not perform substitution/interpolation on anything defined within curly braces.
http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm
大括号将单词组合在一起成为参数。通过谷歌搜索,您可以在互联网上找到大量 tcl 的东西。这是简介
curly braces group words together to become arguments. you can find plenty tcl stuffs on the internet by googling. Here's an intro
man n Tcl
这是 Tcl 解释器的手册页!阅读它。再读一遍!您甚至可以考虑去一个安静的地方大声朗读。这会妨碍你读得太快。每个字母都很重要。
一旦您发现自己陷入“引用地狱”,请返回本文档并再次阅读。
有一个在线版本:
http://www.tcl.tk/man/tcl8.5/ TclCmd/Tcl.htm
man n Tcl
That is the manual page for the Tcl interpreter! Read it. Read it again! You might even consider to go to a quiet place and read it out loud. This will hinder you from reading too fast. Every single letter counts.
Once you find yourself in "quoting hell" go back to this document and read it again.
There is an online version at:
http://www.tcl.tk/man/tcl8.5/TclCmd/Tcl.htm