[NS2]TCL语言基本语法
(来自:《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语言基本语法的更多相关文章
- 【转】让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 ...
- TCL语言笔记:TCL基础语法
一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...
- TCL语言笔记:TCL中的控制结构命令
一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...
- Tcl语言学习--基础知识
一.脚本.命令和单词符号 一个TCL脚本可以包含一个或多个命令.命令之间必须用换行符或分号隔开. 1.关键字/变量 变量是程序的基础变量组成:变量名.变量值变量名要求:任何字符串都可以作为变量名,区分 ...
- Java语言基本语法
Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...
- linux下常用语言的语法检查插件整理
linux下常用语言的语法检查插件 可以结合vim语法检查插件syntastic使用,具体请参考syntastic使用说明 如php,sql,json,css,js,html,shell,c等语法插件 ...
- 初识 go 语言:语法
目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...
- go语言基本语法
一个例子总结go语言基本语法 demo.go package main import ( "fmt" ) //结构体 type PersonD struct ...
- Groovy语言学习--语法基础(5)
至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...
随机推荐
- 浮动的div无论窗口大小变化都能居中显示的js
当div是浮动的时候浏览器窗口发生变化的时候不能居中显示(因为浮动的时候一般设定的有left或者right值) 可以先用jquery获取外围的div随浏览器变化而变化的宽度(加上监听事件) 之后再获取 ...
- java 执行 class
run.sh: #!/bin/bash CLASSPATH=. for jar in *.jar; do CLASSPATH=$CLASSPATH:$jardone CACHE_FILE=`pwd`/ ...
- QT中ui更改后不能更新的解决方法
ui源文件到界面显示的原理可以网上搜索,这里不再描述.简单讲就是先要从*.ui生成ui_*.h然后再编译,所以界面未更新实际上是因为ui_*.h这个文件没有更新导致的. 出现此问题后我尝试了以下几个方 ...
- 找不到 libgtk-x11-2.0.so.0
找不到 libgtk-x11-2.0.so.0 安装 yum groupinstall "Development Tools" yum install gtk+-devel gtk ...
- 【javascript】基于javascript的小时钟
计时事件:通过JavaScript,我们可以设置在一段时间间隔后执行一段代码,而不仅仅是在函数调用后立即执行. 在JavaScript中,使用计时事件是很容易的,主要有两个事件供我们使用 setTim ...
- HDU 4348.To the moon SPOJ - TTM To the moon -可持久化线段树(带修改在线区间更新(增减)、区间求和、查询历史版本、回退到历史版本、延时标记不下放(空间优化))
To the moon Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- Linux命令之which
which [选项] [命令] 将命令的完整路径写入标准输出.具体是在环境变量PATH设置的目录里查找符合条件的文件,而环境变量PATH中保存了查找命令时需要遍历的目录. (1).选项 -v,-V,- ...
- oracle中 char,varchar,varchar2的区别
区别: 1. CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符) ...
- [BZOJ1563][NOI2009]诗人小G(决策单调性优化DP)
模板题. 每个决策点都有一个作用区间,后来的决策点可能会比先前的优.于是对于每个决策点二分到它会比谁在什么时候更优,得到新的决策点集合与区间. #include<cstdio> #incl ...
- Educational Codeforces Round 41 (Rated for Div. 2) ABCDEF
最近打的比较少...就只有这么点题解了. A. Tetris time limit per test 1 second memory limit per test 256 megabytes inpu ...