现在的位置: 首页 > 综合 > 正文

Tcl/tk基础-3

2013年02月23日 ⁄ 综合 ⁄ 共 834字 ⁄ 字号 评论关闭
今天来讲讲set命令
set命令是用来赋值给一个变量的,它需要两个参数:变量名以及变量值
在Tcl里面不用遵循先定义后使用的规则,解析器会自动在第一次赋值时创建变量,赋值后可以用美元符号$加变量名来取值
#给变量var赋值"5"
set var 5
#这个是解析器的输出
=> 5
#调用puts输出变量var里面的值
puts $var
#这个也是解析器的输出
=> 5

这里面的"#"是注释语句的开头,Tcl只支持单行注释
set命令也可以只接受一个参数,这个时候,set跟puts的作用是一样的

set var 5
=> 5
#等价与"puts $var"
set $var
=> 5

事实上,Tcl是一个特殊的脚本语言,它只跟String打交道,它的解析器的基本原理是"替换Substitution"跟"分组Grouping"
所谓的"替换",表现出来的就是允许内嵌命令
而"分组"则允许一个参数里面出现多个单字
替换的命令形式是command substitution, 而内嵌命令需用方括号"["和"]"括起来。Tcl的解析器会把方括号里面的所有内容当作命令来解释
以set命令为例

set len [string length testmessage]
=> 11

在这里例子中,内嵌的命令是"string length testmessage"(string命令会在后面提到)。"string"用来处理所有跟字符串有关的操作,而这里则是用来检测"testmessage"这个字符串的长度,并把返回值赋予len以供以后使用。这个组合命令其实也就相当于

set len 11

如果有多个命令嵌套,Tcl解析器会按顺序的从左到右的解释它们,如

set len [string length [string range test 0 2]]
=> 3

解析器首先解释length,但发现该命令里面嵌套了一个子命令,于是又开始解释该子命令并得到"tes"这个结果,再把这个结果当作string length命令的输入,于是得到"3"

抱歉!评论已关闭.