第一范文网 - 专业文章范例文档资料分享平台

TclTk大全

来源:用户分享 时间:2025/7/19 16:13:00 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Tcl / Tk 大全 作者:陆绍飞 会员名:lsf 中国互动出版网http://www.china-pub.com

set str \string length $str;

这一命令给出的长度为2 3 (l e n g t h 选项对空格字符也计算在内)。现在,让我们来获取在$s t r 字符串中第一次和最后一次出现字符串“s t ”的位置:

string first \string last \

这两个命令给出第一次出现“t ”的值为1 3 (相应于在Te s t 中出现的位置),最后一次出现“s t ”的值也为1 3 (还是Te s t )。在S t r i n g 中出现的“t ”为什么不算数呢?这是因为大多数字符串比较函数是区分大小写和空格的,下面的代码将首先把$s t r 转换为小写字体,然后再执行查找:

string last \

此时,这一命令给出的值为1 6 ,它相应于S t r i n g 中的“s t ”。最后,让我们来删除$ s t r 字符串前后的空格,然后获取这一字符串的长度:

string length [string trim $str \

该命令的返回值为2 1 ,这意味着已经删除了第一个和最后一个空格。 (注意,这个与JAVA的trim不同) 33.2.6 数字的操作

t c l 提供两个操作数字变量和常数的命令:i n c r 和e x p r 。

t c l 中的i n c r 命令等价于C 语言中的操作符+ =、- =、+ +和- -,它的基本语法是:

incr variable integer

这里的v a r i a b l e 必须是一个整数,i n c r 命令将把给定的i n t e g e r 添加到v a r i a b l e 上,因此减法可通过提供负整数来执行。现在让我们演示一下它的用法。首先,创建一个变量,并对这个变量执行i n c r :

set a 81; incr a; puts $a;

$ a 此时具有的值为8 2 。在缺省情况下,i n c r 与+ +相同;当没有提供i n t e g e r 变元时,i n c r 将把1 添加到所指定的变量上。现在,如果要从$ a 上减3 ,可利用如下命令:

incr a -3 puts $a

可以看到,$ a 具有的值为7 9 。最后一点需要说明的是,这里的i n t e rg e r 可以是某个变量的值,例如:

set a 6; set b 9; incr a $b; puts $a;

此时$a 具有的值为1 5 。对于较复杂的数学操作,t c l 提供了e x p r 命令,这一命令对所有标准的ANSI C 操作符有效,操作符的优先级大部分与ANSI C 中的优先级相同。 当需要执行算术操作时,必须把e x p r 命令放在算术操作之前,例如:

set a 20; set b 4; set c $a/$b; puts $c;

上述命令产生的输出结果为:

9

Tcl / Tk 大全 作者:陆绍飞 会员名:lsf 中国互动出版网http://www.china-pub.com

20/4

而不是所想要的结果5 。为了获得正确的答案,需要利用e x p r 命令,例如:

set c [expr $a/$b];

除了标准操作符+、-、*、/之外,还可以为e x p r 提供几个能够使它执行其他数学操作的选项。e x p r 命令的基本语法是:

expr function number

e x p r 能够识别的一些函数及其返回的值如下:

a b s ( x ) x 的绝对值

r o u n d ( x ) x 舍入后所得到的整数值 c o s ( x ) x 的余弦( x 为弧度) c o s h ( x ) x 的双曲余弦 a c o s ( x ) x 的反余弦( 0 到??) s i n ( x ) x 的正弦( x 为弧度)

s i n h ( x ) x 的双曲正弦( ?p/ 2 到p/ 2 ) a s i n ( x ) x 的反正弦( ?p/ 2 到p/ 2 ) t a n ( x ) x 的正切( x 为弧度) t a n h ( x ) x 的双曲正切

a t a n ( x ) x 的反正切( ?p/ 2 到p/ 2 ) e x p ( x ) e 的x 次幕 l o g ( x ) x 的自然对数

l o g 1 0 ( x ) x 的底为1 0 的对数 s q r t ( x ) x 的平方根

下列数学函数采用两个数字变元: p o w ( x , y ) x 的y 次幂 这个函数的用法如下:

set a 2;

set b [expr pow($a,3)]; puts $b;

这些命令产生的输出结果为8 . 0 ,即2 的3 次幕的值。

5.6 引用和置换

引用和置换被大量应用于与变量有关的操作。在本章的前面,我们曾提到过引用(利用双引号构成字符串)和置换的最基本形式。t c l 还支持另一种类型的引用,即花括号引用,以及另一种类型的置换,即命令的置换。回顾过去,我们知道双引号的主要用途是创建具有内嵌空格的字符串,例如:

set kiwi \

双引号也可以用来创建多行的字符串,例如:

set kiwi \New Zealand 3 for a dollar\

除创建多行字符串外,在t c l 字符串中还可以使用ANSI C 语言的标准转义序列,例如:

set kiwi \

这一命令的输出结果如下:

Fresh from New Zealand

10

Tcl / Tk 大全 作者:陆绍飞 会员名:lsf 中国互动出版网http://www.china-pub.com

3 for a dollar\

除此以外,在双引号之间的字符串可以应用两种类型的置换。第一种类型的置换,也就是 变量置换,在本章前面“变量”一节中已经做过说明。在利用双引号引起来的字符串中,你可以通过在变量名前添加$来访问该变量的值、因此下面的命令:

set fruit kiwi;

set place \set how_many 3;

puts \

输出的结果为:

kiwi, fresh from New Zealand, 3 for a dollar

另一种类型的置换是命令置换。命令置换块以左括号( [ )开始,以右括号( ] )结束,例如:

set len_in 2; puts \

这一行代码的输出结果为:

2 inches is 5.08 cm

5 . 0 8 是命令

expr $len_in*2.54

产生的结果。

由于这一命令位于括号中,因此它的返回值将被替换进去。在本例中,我们使用的是t c l 命令e x p r ,不过任何t c l 命令都可以放在括号之中。命令置换可用于大多数命令中,而不只限于由双引号括起来的命令,例如:

set len_in 2;

set len_cm [expr $len_in*2.54]; puts \

这几个命令产生的输出结果与下面一行代码相同:

set len_in 2; puts \

可以在t c l 中使用的另一种类型的引用是花括号的引用,这种类型的引用类似于UNIX shell 中单引号的使用。花括号的引用将利用给定的字符来创建字符串集,其中不进行置换(命令置换或变量置换),并且也不对C 语言的转义序列进行解释,例如:

puts \

这一命令产生的输出结果为:

This is a multi-line string

而下面的命令

puts {This\\nis a \\nmulti-line\\nstring}

产生的输出结果为:

This\\nis a \\nmulti-line\\nstring

要想在花括号括起来的字符串中使用制表符、换行符以及其他的特殊字符,必须按原样实 际地输入它们,例如:

puts{This is a multi-line string}

11

Tcl / Tk 大全 作者:陆绍飞 会员名:lsf 中国互动出版网http://www.china-pub.com

这一命令将产生想要的输出结果。利用花括号括起来的字符串,其真正的用途在于把某些 具有特殊意义的字符作为值提供给变量,例如:

set price 1.00 ;

puts \

这两个命令的输出结果为:

Pears,$1.00 per pound

然而,$ $ p r i c e 有可能会引起混乱,因此最好的办法是使变量p r i c e 具有的值为$ 1 . 0 0 。你可以利用花括号像下面这样来达到目的:

set price {$1.00};

puts \

花括号引用的另一个用途是推迟求值,并用于控制结构和过程的定义。在这些情况下,当 读取整个代码块后,变量的值将被置换进去。

5.7 流的控制 IF 和 SWITCH

t c l 提供几个用来控制流的命令,并且支持有关字符串和数字的所有ANSI C 的标准比较操作符。本节将从i f / e l s e i f / e l s e 命令开始讨论。下面显示的是一个最简单的i f 语句:

if {$x<0}{ set x 10; }

警告T C L 对花括号和空格的使用是十分苛刻的。在i f ,e l s e i f 或e l s e 语句中的开始的花括号必须要和i f ,e l s e i f 或e l s e 在同一行中。而括号外必须是有一个空格。且e l s e 或e l s e i f语句必须要在前一个if 或elseif 的后括号的同一行中。

这个例子在i f 语句体中只有一行代码,不过你可以添加任何数量的行和子语句块。如果需 要执行其他条件的判断,那么每个判断可以像下面那样在括号中给定:

if {($x==\puts \}

判断也可以像下面例子所示的那样进行嵌套:

if {(($arch==\puts \}

要把else 语句体添加到if 语句,可以像下面这样来完成:

if {$x <= 0} { set x 10; } else { set x 0; }

你还可以根据需要添加任意多的elseif 语句:

if {$x == 0} { set x 10;

} elseif {$x == 10} { incr x -1;

} elseif {$x == 100} {

12

搜索更多关于: TclTk大全 的文档
TclTk大全.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6gdgu7cwed5nd0e7mk3k_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top