NS2入门学习(三)之Tcl知识点

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaojiewang1990/article/details/54341698

1、基本命令格式换(如下总结一些易错的知识点)

“#”:注释

";"或者"换行"作为语句的结束

2、变量

变量不需要事先声明;

在使用变量时要在变量名前加$,如$var;

set  var 3,set命令用来给变量赋值;

  unset var,unset命令用来删除变量;

3,组合和替代

替代

        变量替代:如前面的变量赋值

命令替代:这种形式的替代使用方括号"[]"来实现:

                            注意set  a 3;   set len [expr $a*2]; 输出结果是6,tcl中变量只有字符串一种,

                            所以通过$a的值应该是字符串'3',在expr中转换成数值3并进行计算。

反斜杠替代:和c语言类似,与特殊含义字符组合就表示这个字符本身,如“\$” "\{" “\}” "\[" "\]" "\\"来表示这些符号本身$ {} [] \.不再具有特殊含义。

表示续行;和C类似,换页换行等替代。

组合

     通过双引号或者{}使两个字符串组合成一个字符串。

替代与组合的顺序

从左到右遍历参数,组合的决定是在替代前做出的

示例:set a 3; set b 5;

    puts"$a+$b=[set a [expr $a+$b]]"

         =>3+5=8  #首先进行组合,扫描到$a+$b=,得到3+5=,然后替换[]内的,得到值8,且此时a=8;

         puts"[set a [expr $a+$b]]=$a+$b"

         =>13=13+5  #[]是实现了命令替代,上面已经得到a=8,所以前面是a又被赋值13,后面a也是13了

4、数学运算

运算符与C基本类似

5、流程控制

        if语句:          后面的表达式是使用{},if{$a==0}{命令体};
switch语句 : 则通过指定是-exact,-glob,-regexp来完成匹配;
        while语句:    后面表达式和命令体也是使用{};
foreach语句:foreach Var {valuelist} {body},从数据列表中依次取出数值来赋给变量Var,然后执行一次命令体body,
valuelist是用花括号括起来的多个值的组合;
for循环语句: for{set I 1} {$I<11}{ incr 1 } {body}#单独的{}来处理3个部分,同c类似;
        break与continue命令:与C类似;
catch命令:catch { 命令体} result,result用来保存命令结果或者出错信息,如果无错误,返回0给result,若有错则为非0;

6、过程:

自定义过程:proc name {params} {body} #就是定义函数,name为函数名,后面是参数,body是函数体,调用时直接 name var1 var2..;
rename命令:可以改变一个命令的名称
作用域:proc内为局部变量,之外的为全局变量,与C类似,但是在proc内使用全局变量时需要前面加上 global关键字。
递归调用过程:在proc内调用自己,但要有递归结束条件,与C类似

7、数组

定义数组:不用事先定义一个集合,而是直接每次用set定义出数组中的一个元素来。下标可以不是数字,可以是任意字符。unset 数组名 删除数组。
array命令:array 处理数组的命令体,例如array exists arr#判断是否存在数组,如果存在返回1,否则返回0.
示例: set ll [list 0 aa 1 b  2 cc]#构建列表
      array set arr $ll #从列表来构建数组,结果为arr(0)=aa,arr(1)=bb,arr(2)=cc
     set arr(0)
     =>aa
      array get arr
    =>0 aa 1 bb 2 cc
    foreach index [array names arr]
    {puts stdout $arr($index) }
    =>aa
    bb
    cc
   while{[array anymore arr $id]}#如果数组还有剩余元素
  {
set  index[array nextelement arr $id] #获得下一个元素的索引
puts"\$arr($index)=$arr($index)"#打印数组元素的值
  }
    =>$arr(0)=aa
        $arr(1)=bb
        $arr(2)=cc

猜你喜欢

转载自blog.csdn.net/xiaojiewang1990/article/details/54341698