Tcl

✍ dations ◷ 2024-12-23 17:06:21 #美国发明,跨平台软件,动态类型编程语言,自由编译器与直译器,面向对象的编程语言,过程式编程语言,面向文本编程语言,同像性编程语言,脚本语言,Tcl编程语言家族,

Tcl(发音tickle)是一种脚本语言。由John Ousterhout(英语:John Ousterhout)创建。TCL经常被用于快速原型开发 RAD、脚本编程、GUI编程和测试等方面。

Tcl 的特性包括:

旧版 Tcl 没有内置面向对象功能,因此许多 OO 库以扩展形式涌现出来,如 incr Tcl 和 XOTcl,甚至存在纯脚本编写的 OO 包,如 Snit 和 STOOOP(simple Tcl-only object-oriented programming),8.6 版本在内核中提供了 OO 功能页面存档备份,存于互联网档案馆。

Safe-Tcl 是功能受限的 Tcl 子集。文件系统访问受限,任意系统命令禁止执行。它使用双解释器模型,在“不可信解释器”中运行不可信脚本中的代码。由 Nathaniel Borenstein 和 Marshall Rose 设计,借以在电子邮件中包含活动信息,当支持 与 时,Safe-Tcl 即可包含于电子邮件中。Safe-Tcl 功能已集成在标准 Tcl/Tk 发布中。

Tcl 支持扩展包,这些扩展包提供了附加功能(像是GUI,终端程序自动化,数据库访问等)。常用的扩展包有:

下面是TCL程序的例子:

#!/bin/sh# next line restarts using tclsh in path \exec tclsh $0 ${1+"$@"}# echo server that can handle multiple# simultaneous connections.proc newConnection { sock addr port } {     # client connections will be handled in     # line-buffered, non-blocking mode     fconfigure $sock -blocking no -buffering line     # call handleData when socket is readable     fileevent $sock readable }proc handleData { sock } {     puts $sock      if {  } {        close $sock     }}# handle all connections to port given# as argument when server was invoked# by calling newConnectionset port socket -server newConnection $port# enter the event loop by waiting# on a dummy variable that is otherwise# unused.vwait forever

另外一个 Tk 的例子(来自A simple A/D clock)它使用了定时器时间,3行就显示了一个时钟。

 proc every {ms body} {eval $body; after $ms } pack  every 1000 {set ::time  -format %H:%M:%S]} ;# RS

解释:第一行定义了过程every, 每隔ms毫秒,就重新执行body代码。第二行创建了标签其内容由time变量决定。第3行中设置定时器,time变量从当前时间中每秒更新一次。

相关