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

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

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

2. 表达式

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

   set value [expr >=]

3. 指令替换

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

   set age
  puts “My age is $age”

4. 流程控制

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

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

   set value
  if {$value < } {puts “$age is less than ”}
  elseif {$value == } {puts “$age is ” }
  else {puts “$age is more than ” }

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

   set var
  switch var{
   {puts “$var is ”}
   {puts “$var is ”}
   default {puts “$var”}
  }

while {condition} {}

   set i
  while {$i < } {
   puts “$i”
   incr i
  }

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

   for {set i } {$i < } {incr i } {
   puts “$i”
  }

foreach variable {variables} {body}

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

5. 程序

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

   proc sum {a b} {
   return [expr $a + $b]
  }
  
  set num1
  set num2
  set sum [sum $num1 $num2] ;#有参数的调用方法
  puts “The sum is $sum”

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

   set num
  
  proc fun {} {
   set tmp
   puts “The local variable is $tmp”
   global num
   puts “The global variable is $num”
  }
  
  fun ;#无参数情况下的函数的调用

6. 数组

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

   set num_array() “Zero”
  set num_array() “One”
  for {set i } {$i < } {incr i } {
   put &num_array($i)
  }
   set person_info(name) “John”
  set person_info(age) “”
  
  # foreach thing {name age} {
  foreach thing [array names person_info] {
   puts “$thing == $person_info($thing)”
  }

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

[NS2]TCL语言基本语法的更多相关文章

  1. 【转】让Souce Insight支持多种语言的语法高亮:Python,Ruby,ARM汇编,windows脚本文件(bat/batch),PPC,SQL,TCL,Delphi等

    原文网址:http://www.crifan.com/source_insight_support_highlight_for_python_ruby_arm_batch_ppc_sql_tcl_de ...

  2. TCL语言笔记:TCL基础语法

    一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...

  3. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

  4. Tcl语言学习--基础知识

    一.脚本.命令和单词符号 一个TCL脚本可以包含一个或多个命令.命令之间必须用换行符或分号隔开. 1.关键字/变量 变量是程序的基础变量组成:变量名.变量值变量名要求:任何字符串都可以作为变量名,区分 ...

  5. Java语言基本语法

    Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...

  6. linux下常用语言的语法检查插件整理

    linux下常用语言的语法检查插件 可以结合vim语法检查插件syntastic使用,具体请参考syntastic使用说明 如php,sql,json,css,js,html,shell,c等语法插件 ...

  7. 初识 go 语言:语法

    目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...

  8. go语言基本语法

    一个例子总结go语言基本语法  demo.go   package main   import (     "fmt" )   //结构体 type PersonD struct ...

  9. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

随机推荐

  1. 关于 拼接 url 连接 参数的问题(爬虫)。

    比如这里 我找的 后台请求的json的链接: 第一页: http://www.igoldenbeta.com:8080/cn-jsfund-server-mobile/bkt/api?appkey=1 ...

  2. CF1064 E - Dwarves, Hats and Extrasensory Abilities

    题意 交互题, 本来应该是在平面上进行的. 实际上换成一条直线就可以, 其实换成在平面上更复杂一些. Solution 假设\(l\)点是黑点, \(r\)处是白点, 那么就把下一个点的位置放置在\( ...

  3. linux删除乱码文件[转载]

    一些乱码文件不可以通过普通的rm命令进行管理.可以通过删除i节点的方式删除. [root@192_168_100_35 musicwap]# ls??,?K?k?ͨa*.?J]?k?Φ??P???Z? ...

  4. shell读取nginx配置文件中nginx的端口

    #!/bin/shport=`nl /usr/local/openresty/nginx/conf/nginx.conf | sed -n '/listen/p' | awk 'NR==1{print ...

  5. AC日记——【模板】Link Cut Tree 洛谷 P3690

    [模板]Link Cut Tree 思路: LCT模板: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 30 ...

  6. Python中的多进程:fork和multiprocessing

    Python的多进程 套路1:os.fork() 先敲段代码: #!/usr/bin/env python3 import os os.fork() print('1111111111') 执行结果: ...

  7. 【剑指offer】面试题 2. 实现 Singleton 模式

    面试题 2. 实现 Singleton 模式 题目:设计一个类,我们只能生成该类的一个实例. 单例模式:确保一个类只有一个实例,并提供了一个全局访问点. Java 实现 1.饿汉模式 //饿汉模式 p ...

  8. Python与SQLite日期时间函数的使法

    SQLite的时间函数跟Python的时间函数有些许差别,所以稍做记录,供自己以后查询. 网上有将SQLite官方WIKI内容翻译成中文的文章,大家有兴趣可以搜索一下,我这里单纯记录一下个人比较常用的 ...

  9. PyInstaller:把你的Python转为Exe

    把Python程序转为可执行的EXE文件,之前已经介绍过,像py2exe,bbfreeze. 以我自己使用的经历来看,这两款都还不错,比较适合简单的Python程序,如果你加载的第三方类库比较多的话, ...

  10. 如何用jmeter对websockt和protobuf进行压力测试

    参考代码:https://github.com/hutao722/kekexinxin 这是基于Jmeter WebsocketSampler的插件,支持对基于websocket和protobuf的服 ...