章节2:OTcl :The User Language
例1是一个通用Tcl脚本,展示了如何创建一个程序,如何分配变量值,以及如何创建一个环。OTcl是Tcl的面向对象扩展,就像C和C++一样。
在Tcl中,关键词proc用来定义一个程序,由一个程序名和变量在大括号里。关键词set用来给一个变量分配一个值。[expr…]用来让解释器在关键词后的括号内计算表达式的值。一个地方需要注意的是,获取一个分配给变量的值,就是$用来和变量名挂钩。关键词puts输出双引号间的字符串。以下展示了例1的结果:
下一个例子是用Otcl编写的面向对象编程实例。这个例子非常简单,但也展示了用Otcl如何创建一个对象以及使用。作为一个常规NS用户,你自己写自己的对象的机会可能很少。但是,因为你在一个NS仿真编程中使用的所有NS对象,不管是不是用C++编写的通过Otcl链接器供OTcl使用的,或者直接用OTcl编写的,本质上都是OTcl对象,所以理解OTcl对象很重要。
例2是一个OTcl脚本定义了两个对象类,“mom”和“kid”,“kid”是“mom”的子类,并且对每个类都有个成员函数叫“greet”。在类定义后,都声明了每个对象实例,实例中的“age”变量设置为45(“mom”)和15(“kid”),并且每个对象实例都调用了“greet”成员函数。Class关键词用来创建一个对象类,instproc用来定义一个对象类的成员函数。类继承则固定使用关键词 -superclass。定义成员函数中,¥self和C++中的this指针作用相同,instvar检查后面的变量名是否在它的类或者父类中已声明。如果一个变量名已经声明,变量就被引用,如果没有声明就新建一个。最后,关键词new用来创建一个新对象实例。结果如下: