[NS2]TCL语言基本语法

(来自:《NS2仿真实验-多媒体和无线网络通信》)

1. 变量(Variable)和变量替换(Variable Substitution

  tcl变量是在第一次使用set的指令来指派变量的值时所产生的。可以使用unset来取消这个变量。当取用或者改变变量值时,只要在变量名称前加上一个“$”,就可以取用或改变变量内的值。指令eval用于执行一个tcl script

2. 表达式

  tcl中表达式通常使用“expr”指令去判断表达式的真假或去求表达式的值。

1   set value [expr 1>=2]

 

3. 指令替换

  使用[]来完成指令的替换,即把“原tcl script执行结果”取代“原 tcl script”。

 

1   set age 23
2   puts “My age is $age”

 

4. 流程控制

控制指令包括,if-else, switch, while, for, foreach等。

if {condiftion} {body} elseif{condition} {body} else {body}

1   set value 23
2   if {$value < 20} {puts “$age is less than 20”}
3   elseif {$value == 20} {puts “$age is 20” }
4   else {puts “$age is more than 20” }

switch expression { case1{} case2 {} default{}}

1   set var 4
2   switch var{
3       2 {puts “$var is 2”}
4       4 {puts “$var is 4”}
5       default {puts “$var”}
6   }

while {condition} {}

1   set i 0
2   while {$i < 5} {
3       puts “$i”
4       incr i 1
5   }

for {initialization} {condition} {change variable} {body}

1   for {set i 1} {$i < 5} {incr i 1} {
2       puts “$i”
3   }

foreach variable {variables} {body}

1     foreach i {a e i o u} {
2         puts “$i is vowel”
3     }    

5. 程序

  定义程序的基本语法为 proc name params body,即proc name {paramets} {body}。其中,name是函数名称,params是参数列表,body是程序主体。

1   proc sum {a b} {
2       return [expr $a + $b]
3   }
4   
5   set num1 15
6   set num2 16
7   set sum [sum $num1 $num2] ;#有参数的调用方法
8   puts “The sum is $sum”

  在函数中使用外部变量,即全局变量,需要使用global来声明。

 

 1   set num 15
 2   
 3   proc fun {} {
 4       set tmp 14
 5       puts “The local variable is $tmp”
 6       global num
 7       puts “The global variable is $num”
 8   }
 9   
10   fun  ;#无参数情况下的函数的调用

 

6. 数组

  使用set array_name(index) value的格式来声明数组,并且index可以使用数字或字符串。

 

1   set num_array(0) “Zero”
2   set num_array(1) “One”
3   for {set i 0} {$i < 2} {incr i 1} {
4       put &num_array($i)    
5   }

 

1   set person_info(name) “John”
2   set person_info(age) “283   
4   # foreach thing {name age} {
5   foreach thing [array names person_info] {
6       puts “$thing == $person_info($thing)”
7   }

  这里需要注意,在数组名称与“(”之间不能有空格。

 

 

 

 

 

posted @ 2014-04-08 10:48  life91  阅读(934)  评论(0编辑  收藏  举报