Tcl语言笔记之二

摘要:
2,list2.1list命令list这个概念在TCL中是用来表示集合的。TCL中list是由一堆元素组成的有序集合,list可以嵌套定义%list12{34}12{34}2.2concat命令语法:concatlist?例:%lreplace{178{910}2{34}}331782{34}%lreplace{1782{34}}4445617824562.7lrange命令语法:lrangelistfirstlast返回list的第first到第last元素组成的串,如果last的值是end。-exact表示精确匹配;-glob的匹配方式和stringmatch命令的匹配方式相同,将在后面第八节介绍string命令时介绍;-regexp表示正规表达式匹配,将在第八节介绍regexp命令时介绍。这个命令把list的所有元素合并到一个字符串中,中间以joinString分开。

1,表达式

1.1 操作数 TCL表达式的操作数通常是整数或实数。整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么TCL将把这个整数看作八进制的,如果前两个字符是0x则这个整数被看作是十六进制的。

1.2运算符 TCL语法形式和用法跟ANSI C中很相似

1.3 函数

TCL中支持的数学函数如下

abs( x) Absolute value of x.
acos( x) Arc cosine of x, in the range 0 to p.
asin( x) Arc sine of x, in the range -p/2 to p/2.
atan( x) Arc tangent of x, in the range -p/2 to p/2.
atan2( x, y) Arc tangent of x/ y, in the range -p/2 to p/2.
ceil( x) Smallest integer not less than x.
cos( x) Cosine of x ( x in radians).
cosh( x) Hyperboliccosine of x.

double( i) Real value equal to integer i.
exp( x) e raised to the power x.
floor( x) Largest integer not greater than x.
fmod( x, y) Floating-point remainder of x divided by y.
hypot( x, y) Square root of ( x 2 + y 2 ).
int( x) Integer value produced by truncating x.
log( x) Natural logarithm of x.
log10( x) Base 10 logarithm of x.
pow( x, y) x raised to the power y.
round( x) Integer value produced by rounding x.
sin( x) Sine of x ( x in radians).
sinh( x) Hyperbolic sine of x.
sqrt( x) Square root of x.
tan( x) Tangent of x ( x in radians).
tanh( x) Hyperbolic tangent of x.

TCL中有很多命令都以表达式作为参数。最典型的是expr命令,另外if、while、for等循环控制命令的循环控制中也都使用表达式作为参数。

2,list

2.1 list命令

list这个概念在TCL中是用来表示集合的。TCL中list是由一堆元素组成的有序集合,list可以嵌套定义

% list 1 2 {3 4}
1 2 {3 4}

2.2 concat 命令(这个命令不知道怎么用)

语法:concat list ?list...?

这个命令把多个list合成一个list,每个list变成新list的一个元素

2.3 lindex 命令

语法:lindex list index
返回list的第index个(0-based)元素。例:
% lindex {1 2 {3 4}} 2
3 4

2.4 llength 命令

语法:llength list
返回list的元素个数。例
% llength {1 2 {3 4}}
3

2.5 linsert 命令

语法:linsert list index value ?value...?
返回一个新串,新串是把所有的value参数值插入list的第index个(0-based)元素之前得到。
例:
% linsert {1 2 {3 4}} 1 7 8 {9 10}
1 7 8 {9 10} 2 {3 4}

2.6 lreplace 命令

语法:lreplace list first last ?value value ...?
返回一个新串,新串是把list的第firs (0-based)t到第last 个(0-based)元素用所有的value
参数替换得到的。如果没有value参数,就表示删除第first到第last个元素。例:
% lreplace {1 7 8 {9 10} 2 {3 4}} 3 3
1 7 8 2 {3 4}
% lreplace {1 7 8 2 {3 4}} 4 4 4 5 6
1 7 8 2 4 5 6

2.7 lrange 命令

语法:lrange list first last
返回list的第first (0-based)到第last (0-based)元素组成的串,如果last的值是end。就是
从第first个直到串的最后。
例:
% lrange {1 7 8 2 4 5 6}2 end
8 2 4 5 6

2.8 lappend 命令

语法:lappend varname value ?value...?
把每个value的值作为一个元素附加到变量varname后面,并返回变量的新值,如果varname
不存在,就生成这个变量。例:

%seta 9

9
% lappend a 1 2 3
9 1 2 3
% set a
9 1 2 3

2.9 lsearch命令

语法:lsearch ?-exact? ?-glob? ?-regexp? list pattern
返回list中第一个匹配模式pattern的元素的索引,如果找不到匹配就返回-1。-exact、-glob、
-regexp是三种模式匹配的技术。-exact表示精确匹配;-glob的匹配方式和string match
命令的匹配方式相同,将在后面第八节介绍string命令时介绍;-regexp表示正规表达式匹配,
将在第八节介绍regexp命令时介绍。缺省时使用-glob匹配。例:
% set a { how are you }
how are you
% lsearch $a y*
2
% lsearch $a y?
-1

2.10 lsrot命令

语法:lsort ?options? list
这个命令返回把list排序后的串。options可以是如下值:
-ascii 按ASCII字符的顺序排序比较.这是缺省情况。
-dictionary 按字典排序,与-ascii不同的地方是:
(1)不考虑大小写
(2)如果元素中有数字的话,数字被当作整数来排序.
因此:bigBoy排在bigbang和bigboy之间, x10y 排在x9y和x11y之间.
-integer 把list的元素转换成整数,按整数排序.
-real 把list的元素转换成浮点数,按浮点数排序.
-increasing 升序(按ASCII字符比较)
-decreasing 降序(按ASCII字符比较)
-command command TCL自动利用command 命令把每两个元素一一比较,然后给出排序结果。

2.11 split 命令

语法:split string ?splitChars?
把字符串string按分隔符splitChars分成一个个单词,返回由这些单词组成的串。如果
splitChars
是一个空字符{},string被按字符分开。如果splitChars没有给出,以空格为分隔符。例:
% split "how.are.you" .
how are you
% split "how are you"
how are you
% split "how are you" {}
h o w { } a r e { } y o u

2。12 join 命令

语法:join list ?joinString?
join命令是命令的逆。这个命令把list的所有元素合并到一个字符串中,中间以joinString分
开。缺省的joinString是空格。例:
% join {h o w { } a r e { } y o u} {}
how are you
% join {how are you} .
how.are.you

免责声明:文章转载自《Tcl语言笔记之二》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows Server 2016 远程桌面多用户登录PyCasbin: 支持 ACL、RBAC、ABAC 多种模型的 Python 权限管理框架下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu 搭建简单的git server

简介 Git 可以使用四种主要的协议来传输资料: 本地协议(Local):   最基本的就是 本地协议(Local protocol), 其中的远程版本库就是硬盘内的另一个目录。 这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或者比较少见的多人共用同一台电脑的情况。 后者并不理想,因为你的所有代码版本库如果长存于同一...

20169205 2016-2017-2 《网络攻防技术》第7周学习总结

20169205 2016-2017-2 《网络攻防技术》第7周学习总结 教材学习内容总结 课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下: Windows操作系统的基本结构 运行于处理器特权模式的操作系统内核 运行在处理器非特权模式的用户空间代码 采用宏内核模式来进行构架 Windows操作系统内核...

部署与管理ZooKeeper(转)

本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要点,围绕ZK的部署和运维两个方面讲一些管理员需要知道的东西。本文并非一个ZK搭建的快速入门,关于这方面,可以查看《ZooKeeper快速搭建》。 1.部署 本...

Awk命令

一. AWK入门指南 Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务。本章是个入门指南,让你能够尽快地开始编写你自己的程序。第二章将描述整个语言,而剩下的章节将向你展示如何使用Awk来解决许多不同方面的问题。纵观全书,我们尽量选择了一些对你有用、有趣并且有指导意义的实例。 1.1 起步 有用的awk程序往往很简短,仅仅一两...

MIPI DSI协议介绍

MIPI DSI协议介绍 reference: http://www.wangweilin.name/qrx_448.html https://blog.csdn.net/qq160816/article/details/19555957 http://www.elecfans.com/yuanqijian/jiekou/20171113578403.h...

Vagrant系列(二)Vagrant的配置文件Vagrantfile详解

一、简介 在我们的工作目录下有一个Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络、内存、主机名等,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以它的配置语法也是Ruby的,每个项目都需要有一个Vagrantfile,在执行vagrant...