TCL的基本语法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
名称空间
可以通过如下命令引用名称空间里面的变量或过程: puts $XXX::var_x //结果:tw-gongjin XXX::AddXY 5 5 //结果:10 为使上面的名称空间简洁便于维护,可以如下定义: namespace eval XXX { variable var_x tw-gongjin namespace export AddXY } proc XXX::AddXY { x y } { return [expr $x + $y] }
循环语句
while和for循环也是使用率很高的命令。它可以完成一些 if语句实现起来比较困难的语句。下面就举例来简单的介 绍一下。 对于while来数,当满足循环条件时,就执行循环体, 否则退出。需要注意的是,在执行循环体时必须有对循 环条件的操作,否则就会出现一个死循环。 下面以例子说明while循环:
可以把小时侯学习数学的运算符结合顺序联系在一起, 以便记忆
还要记得运算符两边的数据类型
对于算符表达式,注意运用expr来求解
list和regexp命令
1、下面主要介绍以下几个list命令: lindex llength lsearch split
list和regexp命令
list返回list的第index个(0-based)元素 如下语法:lindex {1 2 {3 4}} 2 lindex $list1 num 结果返回为:3 4
while { $i > 0 } {
puts “i is $i\n” incr i -1
}
循环语句
下面再来看看for循环的例子: 比如要实现 set result 0 for { set i 1 } { $i <= 10 } { incr i 1 } { set result [expr $result + $i] } puts $result 从for的例子中,可以看出很容易实现了从1到10的相加。
2、设置数组变量
数组是一些元素的集合
设置数组变量
set people(name) tw set people(age) 查询数组变量 25
set people(name) 或者 puts $people(age)
注意:设置和查询不能 用命令:var
设置变量,数组和列表
3、设置list列表
list这个概念在TCL中是用来表示集合
if和switch语句
TCL中的控制流包括if、while、for、foreach、switch、 break、continue等命令。在这节简单介绍下if和switch 语句。 If语句的命令格式为: If {条件判断} { 命令体1 } else { 命令体2
}
if和switch语句
设置变量,数组和列表
1、设置简单变量
程序语言中变量值的设定是简单重要一个内容(注意:在所有 TCL脚本中系统内部的命令名是小写格式) 下面列举几个简单的例子进行说明: 设置变量x的值为:100 set x 100 或者 var x 100 查看变量x的值: set x 或者 puts $x
设置变量,数组和列表
If简单举例介绍 set var_i 10 if { $var_i >= 0 } { set result [expr $var_i * $var_i] puts “$result” } else { puts “var_i is letter than zero ” }
if和switch语句
介绍字符串操作
3、string tolower string ?first? ?last? 返回值为:把字符串string转换成小写后的字符串,如 果给出了first和last变量,就只转换first和last之间的 字符 例如:string tolower TW-GONGJIN 结果:tw-gongjin
介绍字符串操作
本节主要介绍几个字符串的操作 1、string compare $string1 $string1 该命令把string1和string2两个字符串进行比较。串1大 于串2时返回1,等于返回0,否则返回-1。 例如:string compare tw gojing 结果返回:1 注意:按ACSII的顺序进行比较 2、string equal 不相等返回0 $string1 $string2 串1等于串2返回1,
列举几个Proc过程和catch的例子
catch主要用来捕捉tcl中一些命令或过程中的脚本错误。 catch的参数是TCL脚本。如果脚本正常完成,catch返回0 。如果脚本中发生错误,catch会俘获错误(这样保证 catch本身不被终止掉)然后返回1表示发生了错误。 例子如下: • catch {unset xxxyyy} msg 值为:1 • catch {unset addT 1 4 5 6 5} msg 值为:1 变量msg主要存储的是错误的信息。如果执行正确的话, msg通常存储的是一个空串。
注意num的取值为从0开始的整数,若取错值则返回一个空串 llength 返回一个整数,其值代表列表中所拥有元素的个 数,用法如下: llength { 1 2 3 {4 5}} 返回结果为:4 通用格式:llength $list1
list和regexp命令
lsearch返回list中第一个匹配模式pattern的元素的索 引,如果找不到匹配就返回-1 格式如下: lsearch 返回结果为:2 split把字符串string按分隔符splitChars分成一个个单 词,返回由这些单词组成的串。缺省值是空格 语法:split string ?splitChars? 用法如下:split “how*are*you!” * 返回结果:how are you! { 12 34 {1 3}} “1 3”
列举几个Proc过程和catch的例子
下面再介绍一种带缺省参数的三个数相加的过程。 还是通过具体的例子来理解并运用此类过程: 例如: proc addT {val1 {val2 2} {val3 3}}{ set result [expr $val1+$val2+$val3 ] puts $result } 则: addT 1 //值为6 addT 2 20 //值为25 addT 4 5 6 //值为15
设置变量数组和列表表达式运算符和优先级list几条命令语句简介下regexpif和switch语句循环语句字符串操作列举几个proc过程和catch例子名称空间内容综述内容综述设置变量数组和列表设置变量数组和列表1设置简单变量程序语言中变量值的设定是简单重要一个内容注意
TCL的基本语法
内容综述
设置变量,数组和列表 表达式,运算符和优先级 List几条命令语句,简介下regexp if和switch语句 循环语句 字符串操作 列举几个Proc过程和catch例子 名称空间
名称空间
第三种名称空间的定义方法: namespace eval XXX { variable var_x tw-gongjin }
proc XXX::AddXY { x y } { return [expr $x + $y] }
第二和第三名称空间的引用方法同一
OVER
switch作用和if一样都是根据判断结果然后在去执行符合 的条件。对于if来说,经常判断一些拥有两种状态的条件 ,而switch经常用于有多个判断条件。如:给出一个1到7 的整数来判断今天是周几,这个时候用switch会比if好些
switch $x { 1 { puts “Today is Monday!”} 2 {puts “Today is Monday!” } „„„„„„„„ 7 {puts “Today is Monday!”} default {puts “Sx isn’t between 1 and 7!”} }
名称空间
名称空间就是把过程和变量集中到单独的名称空间里面。 名称空间有助于构建大的应用程序。
名称空间的例子如下: namespace eval XXX { variable var_x tw-gongjin proc AddXY { x y } { return [expr $x + $y] } }
设置一个列表:list 1 2 {3 4}
一个列表赋值个以变量:set arr_x [list 1 2 {2 se}] 读取一个列表变量值: set arr_x 或者 puts $arr_x
设置变量,数组和列表
4、备注说明
注意set 参数的个数 对于上面设置数组变量的例子 不能用命令set people xxx再设置people的值 list是一个设置集合的命令名,当作为参数时要用[]括起来 对于一个已经存在的变量,用unset 可以取消变量的设置; 用info exists 可以检查一个变量是否存在
list和regexp命令
regexp命令 regexp命令用于判断正规表达式是否全部或部分匹配字符 串string,匹配返回1,否则0 。具体的用法 举例说明: regexp { ([0-9]+) *([a-z]+)} " there is 100 apples" total 返回结果为:1 对于list和regexp命令,这里只是列举了一些简单的例子 ,有兴趣的可以参看更多的资料,来对其进行更深的理解
4、string toupper string ?first? ?last? 用法和第5个介绍的字符串相似
列举几个Proc过程和catch的例子
TCL中过程是由proc命令产生的,主要有基本的命令来实 现一个或多个特定的功能。 下面还是以举一个简单的小例子来说明一下问题,写一个 能够实现两个说相加的过程: proc addxy { x y } { set result [expr $x + $y] puts $result } 写完上面的过程后,就可以用如下命令计算两个数的和: Addxy 100 66
运算符和优先级
1、运符
TCL脚本语言中的运算符通其他语言一样,如下几 种常用的运算符: 负号(-)运算符和非(!)运算符
算数运算符*,/, %, +, 比较运算符<,>,==, <=,=> 逻辑运算符||,&&,
运算符和优先级
2、优先级
前面列举了几个运算符,其优先顺序,就是按照所列举的, 自顶而下优先级越来越低 注意: 可以通过()小括号来改变优先顺序