主要摘自一个pdf版本的TCL教程和一些网络资料,挑了一些个人觉得有用的,以便以后查阅。
基本概念
Tcl (最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言 。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本编程, GUI 和测试等方面。TCL念作“踢叩” "tickle". Tcl的特性包括:
* 任何东西都是一条命令,包括语法结构(for, if等)。
* 任何事物都可以重新定义和重载。
* 所有的数据类型都可以看作字符串。
* 语法规则相当简单
* 提供事件驱动给Socket 和文件。基于时间或者用户定义的事件也可以。
* 动态的域定义。
* 解释语言,代码能够动态的改变。
* 完全的Unicode 支持。
* 平台无关。Win32 , UNIX , Mac 上都可以跑。
* 代码紧凑,易于维护。
Tcl语言的一大特性就是嵌入型,可以跟其他的应用程序互动,互相调用。
NS是使用了所谓的分裂对象模型 ,使用两种OO语言,Otcl和C++,编写。两者的关系有一篇文章 做了很好的叙述。要学好NS2,必然要对tcl有深入的了解。
Tcl的语法
TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或 TAB键隔开。
在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution) ; 在执行阶段,TCL 解释器会把第一个单词当作命令名 ,并查看这个命令是否有定义,如果有定义就激活这个命令对应的 C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理 。
置换(substitution)
TCL解释器在分析命令时,把所有的命令参数都当作字符串看待,
%set x 10 //定义变量 x,并把x 的值赋为 10
10
%set y x+100 //y的值是 x+100,而不是我们期望的 110
x+100
所以,在tcl中需要进行替换,达到我们希望的结果。
Tcl提供三种形式的置换:变量置换、命令置换和反斜杠置换 。
■变量置换
变量置换由一个$符号标记,变量置换会导致变量的值插入一个单词中 。例如:
%set y $x+100 //y 的值是 10+100,这里x 被置换成它的值 10
10+100
这时,y 的值还不是我们想要的值 110,而是 10+100,因为T