1
14
当Sun的一位营销人员宣布TCL“企业就绪”时,开发人员添加了以下功能:
|
2
16
我最喜欢的“隐藏或方便的特性”是TCL中报价的工作原理。我喜欢用这个短语 引用是一种工具,而不是规则 “。我也喜欢说 当你需要花括号时,你只需要花括号。 “ 虽然大多数语言都有规则,在某些情况下必须使用块分隔符(例如,在C语言中,必须使用来指定块),但tcl并没有那么严格。 使用tcl,您可以选择任何引用字符给您所需的效果。当然有一些最佳实践,但最终你可以选择最能让你完成工作的引用字符。 这意味着,例如,您可以通过多种方式定义一个过程,包括:
……等等。同样适用于条件语句、循环和其他一切。(对于未初始化的,大括号大致相当于shell单引号,双引号类似于shell双引号,方括号类似于shell反勾号。). 现在,很多人看到这个就说wtf?但它确实给了程序员很大的能力。在comp.lang.tcl中,我们经常会遇到这样的问题:“如果我做‘这和$that’,我如何获得要扩展的$that?”答案是这样的:“病人:医生,当我做这个医生时很疼:不要做那个”。也就是说,如果您不喜欢使用一组分隔符所得到的行为,请选择其他一些分隔符。仅仅因为if语句通常用大括号构造并不意味着 必须 用大括号构造。 这是我最喜欢的TCL“隐藏”功能。它并不是隐藏的——它就在TCL(n)的完美而简洁的手册页上,但是直到你完全摸索TCL是如何工作的,后果才清楚。 |
3
12
另一个不明显的特性是,未识别的命令会落入一个名为“unknown”的处理程序中,您可以重新定义该处理程序。将未知命令作为表达式进行计算:
有关更多示例,请访问wiki页面 Radical Language Modification |
4
12
tcl的[trace]命令允许截取对任何变量的读写。这允许您在任何变量上实现一个观察者,并向任何变量添加任意复杂性的自动范围检查(就像您是通过setter/getter访问变量一样)。您还可以使用这种技术创建自动递增的变量。
如果试图将“myvar”设置为与正则表达式不匹配的任何内容,则会出现运行时错误。 |
5
7
对于来自其他语言的人来说,一个不隐藏但不明显的便利特性是,您可以定义自己的控制结构(如果您想危险地生活,甚至可以重新定义现有的控制结构)。有一些关于 Tcl Wiki |
6
7
TCL是这样一种简单、开放的语言,隐藏的功能很少。这一切都是为了让程序员能够扩展和适应。 |
7
7
TCL的所有“关键字”都是常规的TCL命令,包括[for]、[foreach]、[while]等控制结构。这意味着您可以通过用纯TCL代码编写新的控制结构来扩展语言。 例如, try/on/trap 结构已经在TCL8.6a中实现,只使用TCL代码。类似地,tcllib包含control::do,一个do/while控制结构。 通过[upvar]和[uplevel]命令可以实现很多这一点,这些命令允许您访问变量或在不同的堆栈帧中执行代码。 |
8
5
imho TCL最大的隐藏特征是 C API. 使用它,很容易包装一个核心C程序或子系统,并在TCL中编写一个GUI或其他功能。虽然这一特性不是TCL独有的,但TCL的设计初衷是这样的,C API特别容易使用。 第二大隐藏特征是 packer 是所有几何管理者的父亲。有了这个,图形用户界面就可以拥有相当大的窗口,而且代码数量非常少。值得注意的是,tcl/tk在.net问世至少10年前就进行了几何管理。 Tcl的第三大特点是能够通过C API或Tcl中定义的命令来执行语言。虽然不是非常lisp宏,但仍然非常灵活。 Expect 是围绕扩展basse tcl语言以生成特定于域的脚本语言而构建的应用程序的一个很好的例子。 编辑: 嗯,打扰我,xt really did have a geometry manager 虽然我同意Nat的观点,但它比pack更痛苦;- |
9
5
|
10
5
我认为 time 指挥棒极了。在comp.lang.tcl中,它并不是完全隐藏的,但这并不能阻止人们偶尔询问“哪个功能更快”。 任何时候你想知道“这需要多长时间?”或者“哪种方法更快?”你只需通过“时间”命令来调用它。没有创建对象,没有数学,没有开销,非常简单。其他语言也有类似的特性,尽管有些语言不那么优雅。 |
11
2
文档良好的C API还允许在Perl中轻松集成。我对tcl/tk的经验可以追溯到1995年,但在2000年左右的时间里,我发现了perl/tk,从此再也没有回头过。 最近,tcl和tkx-perl包给了我们现代的图形用户界面,而前面提到的两个模块虽然不简单,但涉及的代码相对较少,考虑到它们允许跨语言边界执行什么操作。这可以直接归因于出色的API(显然还有Perl的强大功能)。 |
Ubi · 从tkinter中的多个文本框中获取值 6 年前 |
njamescouk · tcl返回用户选择的文件名 6 年前 |
Nagesh HS · 如何在每次运行后更新TCL文件中的标志位? 7 年前 |
Nagesh HS · 如何使用tcl更新文件中的tcl变量值? 7 年前 |
Nae · 为什么不鼓励使用多个Tk实例? 7 年前 |
Nae · 按下按钮时如何查看菜单? 7 年前 |
Jimmy · 如何独立显示多个窗口? 7 年前 |