
Tcl
bleauchat
证明自己,同时验证你的选择是错误的!
展开
-
变量置换
除了直接给变量赋值之外,另一种常见情形是把某个变量的值赋给另外一个变量。例如,变量x的值为1,我们期望变量y的值是x+2也就是3。采用如下代码,最终发现y的结果是x+2,并不是期望值3。这里就涉及到变量置换;在Tcl中,变量置换通过$(美元符号)完成。看一个简单的例子。变量x值为3,如果需要把变量x的值赋给变量y,就需要通过$x来完成,如下图所示代码:是不是所有的变量,只要通过...原创 2019-04-04 09:32:34 · 1228 阅读 · 0 评论 -
表达式
操作数TCL 表达式的操作数通常是整数或实数。整数一般是十进制的, 但如果整数的第一个字符是0(zero),那么 TCL 将把这个整数看作八进制的,如果前两个字符是 0x 则这个整数被看作是十六进制的。 TCL 的实数的写法与 ANSIC 中完全一样。如:2.17.9e+126e43.运算符和优先级下面的表格中列出了 TCL 中用到的运算符,它们的语法形式和用法跟 ANSI...原创 2019-04-07 22:03:29 · 220 阅读 · 0 评论 -
list
list 这个概念在 TCL 中是用来表示集合的。 TCL 中 list 是由一堆元素组成的有序集合, list 可以嵌套定义, list 每个元素可以是任意字符串,也可以是 list。下面都是 TCL 中的合法的 list:{} //空 list{a b c d}{a {b c} d} //list 可以嵌套list 是 TCL 中比较重要的一种数据结构,对于编写复杂的脚本有很大的帮...原创 2019-04-07 22:46:20 · 328 阅读 · 0 评论 -
Tcl是什么?
安装Vivado之后,在GUI界面会看到Tcl Console,在这里可以输入Tcl命令。同时,还会发现有一个所谓的“Vivado 2018.2 Tcl Shell”(如果你安装的是Vivado 2018.2的话),意味着可以在Tcl模式下使用Vivado。通常,借助GUI的操作都有相应的Tcl命令,但不是每个Tcl命令都可以通过GUI完成。从这个角度而言,用户可以编写自己的Tcl命令扩展Viva...原创 2019-04-03 00:00:14 · 3567 阅读 · 0 评论 -
变量赋值
Tcl脚本的构成如图所示,可以只包含一条命令,也可以包含多条命令,命令之间可以是分号隔开,也可以是换行;如下图所示:采用分号或换行作为命令之间的分隔符,其区别在于分号促使其左侧命令不会显示输出结果。如下图所示。由此可见,尽管以分号作为命令之间的分隔符可使代码更为紧凑,但也降低了调试过程中命令结果的可视性。从代码风格的角度将,换行可提升代码的可读性 :Tcl中的命令是由一个或多个单词...原创 2019-04-03 00:12:34 · 2221 阅读 · 0 评论 -
TCL基本语法
第一个TCL程序让我们写一个简单的Tcl程序。所有的Tcl文件都以.tcl为扩展名。所以,把下面的源代码在 test.tcl 文件中:#!/usr/bin/tclsh ;#头文件puts "Hello, World!"假设,TCL环境设置正确;让我们切换到文件所在的目录,然后运行该程序:$ tclsh test.tcl我们会得到下面的输出。Hello, Worl...原创 2019-08-08 10:39:08 · 1799 阅读 · 0 评论 -
TCL命令
Tcl命令实际上是词语的列表,使用要执行表示该命令的第一个字,接下来的单词代表参数。为了组单词组成单一的参数,随函多个单词可使用“”或{}。Tcl命令的语法如下:commandName argument1 argument2 ... argumentN让我们来看看Tcl命令的一个简单的例子:#!/usr/bin/tclshputs "Hello, world!"当上述代...原创 2019-08-08 10:52:30 · 1529 阅读 · 0 评论 -
TCL数据类型
原始数据类型在Tcl中是字符串,我们常常可以找到字符串和引用在Tcl语言中。这些原始数据类型依次创建复合数据类型列表和关联数组。在Tcl中,数据类型可以表示不仅是简单Tcl的对象,但也可以代表相同的句柄,图形对象(主要是小部件)复杂的对象,和I/O通道。简单的Tcl对象在Tcl中,无论它是一个整数,布尔,浮点数,或一个字符串。当使用一个变量,可以直接赋值给它,Tcl没有声明一步。可以有内部...原创 2019-08-08 11:39:00 · 2528 阅读 · 0 评论 -
TCL数组
数组是一组使用索引对应元素的排列方式。常规数组的语法如下所示:set ArrayName(Index) value用于创建简单数组的例子,如下所示:#!/usr/bin/tclshset languages(0) Tclset languages(1) "C Language"puts $languages(0)puts $languages(1)当上述代码被执行时,...原创 2019-08-08 16:05:39 · 863 阅读 · 0 评论 -
TCL字符串
Tcl 的原始数据类型是字符串,我们常常可以在Tcl找到引用字符串的唯一语言。这些字符串可以包含字母数字字符,数字,布尔值,甚至是二进制数据。 TCL采用16位Unicode字符和字母数字字符,可以包含字母包括非拉丁字符,数字或标点符号。布尔值,可以表示为1或0,yes 或 true 为真值,no 或 false 为假值;字符串表示不同于其他语言,在TCL,只有一个字时,不需要包含双引...原创 2019-08-09 00:38:44 · 479 阅读 · 0 评论 -
TCL列表
列表是Tcl的基本可用数据类型之一。它是用于表示项目的有序集合,可以包括不同类型的在同一列表的项目。此外,一个列表可以包含另一个列表;创建一个列表列表的一般语法如下:set listName { item1 item2 item3 .. itemn }# orset listName [list item1 item2 item3]# or set listName [spl...原创 2019-08-09 10:46:26 · 214 阅读 · 0 评论 -
TCL过程
程序是什么,只不过代码块的一系列命令,提供了一个可重复使用的特定功能。它被用于避免相同的代码被重复在多个位置,函数相当于许多编程语言中使用的功能,并提供Tcl proc命令的帮助。创建一个简单程序的语法如下所示:proc procedureName {arguments} { body}一个简单程序的例子如下:#!/usr/bin/tclshproc helloWo...原创 2019-08-09 10:56:23 · 451 阅读 · 0 评论 -
变量:相关命令
■set置数;■unset这个命令从解释器中删除变量,它后面可以有任意多个参数,每个参数是一个变量名,可以是简单变量,也可以是数组或数组元素。例如:% unset a b day(monday)上面的语句中删除了变量 a、 b 和数组元素 day(monday),但是数组 day 并没有删除,其他元素还存在,要删除整个数组,只需给出数组的名字。例如:■append 和 incr...原创 2019-04-07 21:34:24 · 233 阅读 · 0 评论 -
变量:数组
数组是一些元素的集合。 TCL 的数组和普通计算机语言中的数组有很大的区别。在 TCL 中,不能单独声明一个数组,数组只能和数组元素一起声明。数组中,数组元素的名字包含两部分:数组名和数组中元素的名字, TCL 中数组元素的名字(下标)可以为任何字符串。例如:第一个命令生成一个名为 day 的数组,同时在数组中生成一个名为 monday 的数组元素,并把值置为 1,第二个命令生成一个名为 ...原创 2019-04-07 21:12:00 · 280 阅读 · 0 评论 -
命令置换
命令置换是Tcl的第二种置换形式,该置换以方括号[]形式体现;方括号中是另外一个Tcl命令,从这个角度而言,这实际上就是命令的嵌套;命令置换会导致某一个命令的所有或部分单词被另一个命令的结果所代替;如下图所示。命令expr会在解析set的单词时执行,expr的结果即字符串16成为命令set的第二个参数:同时,命令置换时方括号中的脚本可以包含任意多条命令,命令之间用换行符或分号隔开;但是,方...原创 2019-04-04 09:57:22 · 883 阅读 · 0 评论 -
反斜杠置换
最后一种置换是反斜杠置换。与C语言中的反斜杠用法类似,Tcl中的反斜杠主要用于在单词中插入被Tcl解释器当作特殊符号的字符,例如换行、空格、[、$等;例如,需要给变量str1赋值为helloworld(注意hello与world之间有空格),如果没有反斜杠,Tcl解释器会认为这里的空格是分割符,从而认为set命令的参数多于两个,故报错。添加反斜杠\后,空格不再被当作分割符,hello worl...原创 2019-04-04 15:13:50 · 12057 阅读 · 0 评论 -
双引号与花括号
在Tcl中,可通过双引号“”和花括号{}将多个单词包括分隔符(例如:换行符和空格)和置换符(例如:美元符号$、方括号[]和反斜杠)等特殊字符组成一组,作为一个参数处理;区别在于双引号内的置换正常进行,而花括号内的置换有可能会被阻止,如下图所示:变量s被赋值为Hello World,注意这里通过双引号避免了空格被当作分隔符处理。第一个puts命令使用了双引号,可以看到所有置换都随之发生;第二...原创 2019-04-06 20:48:32 · 1984 阅读 · 0 评论 -
注释与续行
Tcl中的注释符为井号#,但井号#的位置是有所讲究的,即它必须位于命令的第一个字符。从这个角度而言,Tcl的注释和命令处于同一层次,这意味着一个注释要占用一个命令位置。看一个简单的例子:在这个例子中,第一条注释独自占据一行并以#开始,因此该注释是合法的;第二条注释尽管和set命令在同一行,但set命令后紧随分号,表明命令结束,故该注释也是合法的;第三条注释中,#出现在set命令中间,并不是...原创 2019-04-06 21:37:23 · 1583 阅读 · 0 评论 -
深入理解Tcl中的置换
Tcl语言中有三类置换:变量置换、命令置换和反斜杠置换。可以说“置换”是Tcl的灵魂,同时也是让初学者容易感到困惑的一个难点。很多初学者常会碰到这样的情形:不希望发生置换时却发生了或者希望发生置换时却没有发生,加之一些Tcl解释器调试功能欠佳,往往让初学者受挫,觉得自己的脚本发生了诡异的行为。实际上,Tcl的置换机制很简单,其行为也很容易预测,只需记住如下两条规则:规则1:Tcl在解析一条命令...原创 2019-04-06 22:01:13 · 1532 阅读 · 0 评论 -
Tcl中的数学运算
Tcl中的数学运算,即便是很简单的两个数相加,都要用到命令expr,看下面这个例子。在这个例子中,计算x1与x2之和时通过expr命令实现。可以看到如果直接写{$x1 + $x2},给变量y1赋值,此时,Tcl解释器把它们当作字符串处理,并不会完成相应的计算。但如果对变量y1使用expr命令,则可得到预期结果expr命令所支持的计算操作符是C语言中操作符的一个子集,并且写法、优先级也和C语...原创 2019-04-06 22:25:44 · 14889 阅读 · 0 评论 -
Tcl的字符串操作:获取字符
在Tcl中并不需要显示地指定变量的数据类型,因为Tcl本身将所有的变量值视为字符串,并将他们作为字符串来保存,可见,字符串在Tcl中扮演着举足轻重的角色;Tcl本身提供了很多字符串操作命令,而且很多对字符串操作的命令是以string开头的。例如,string index可获取指定位置的字符,而string range可获取指定区间的字符。这里就要提到Tcl中的字符串索引。如下图所示,对于字符串...原创 2019-04-06 22:37:05 · 10972 阅读 · 1 评论 -
Tcl的字符串操作:比较字符串
在Tcl中,可利用string compare命令对字符串进行比较。该命令需要接收两个字符串参数。如果第一个字符串在字典中先于第二个字符串,返回-1;如果第一个字符串在字典中后于第二个字符串,返回1,如果两者相同,返回0,如下图所示:string equal则是对两个字符串进行简单的比较,如两者严格相同,则返回1,否则返回0(与stringcompare的返回值是不同的),如下图所示:...原创 2019-04-06 22:50:12 · 9978 阅读 · 0 评论 -
Tcl的字符串操作:字符串匹配
所谓字符串匹配是指检测待测字符串(也可称为目标字符串)是否与给定的模式相匹配。这里的模式其实也是字符串;Tcl提供了两种字符串匹配方法:一种为通配符模式,一种为正则表达式。这里先介绍较为简单易用的通配符匹配模式。这时要用到命令string match。该命令需要接受两个参数,一个是匹配模式,一个是待测字符串。若两者匹配则返回1,否则返回0。string match可支持的模式如下图所示:案...原创 2019-04-07 16:15:04 · 19246 阅读 · 0 评论 -
Tcl的字符串操作:其他字符串操作命令
string命令提供了三种字符串裁剪方式:trim、trimleft和trimright。每种方式都需要两个参数,一个指定待裁剪的字符串,一个指定裁剪模式。默认情形下(不指定裁剪模式),裁剪空白符(空格、制表符、换行符和换页符);事实上,这也是裁剪命令最常用的情形。如下图所示,trimleft从字符串的开头进行裁剪,trimright从字符串的结尾进行裁剪,trim则把在字符串开头和结尾出现的要裁...原创 2019-04-07 16:45:25 · 7753 阅读 · 0 评论 -
变量:简单变量
一个 TCL 的简单变量包含两个部分:名字和值。名字和值都可以是任意字符串。例如一个名为“13237&*: hdgg"的变量在 TCL 中都是合法的。不过为了更好的使用置换(substitution),变量名最好按 C\C++语言中标识符的命名规则命名。 TCL 解释器在分析一个变量置换时,只把从$符号往后直到第一个不是字母、数字或下划线的字符之间的单词符号作为要被置换的变量的名字。例如:...原创 2019-04-07 20:38:34 · 668 阅读 · 0 评论 -
TCL字典
词典是用于值映射到键的布置。常规字典的语法如下所示:dict set dictname key value# or dict create dictname key1 value1 key2 value2 .. keyn valuen用于创建字典的一些例子如下所示:#!/usr/bin/tclshdict set colours colour1 red puts $co...原创 2019-08-09 12:39:59 · 901 阅读 · 0 评论