tcl培训教程笔记

  • Tcl的核心命令集可以扩展、被继承、被屏蔽
  • 简单的讲,Tcl语言的语法实际上是一些Tcl解释器怎样对Tcl命令进行分析的规则的集合
  • 命令之间必须用换行符分号隔开
  • Tcl的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或Tab键隔开
  • Tcl解析器在分析命令时,把所有的命令参数都当做字符串看待
  • 变量置换(variable substitution)由$符号标记,会导致变量的值插入一个单词中
//假定‘%’为Tcl的命令提示符,输入命令并回车后,下一行会输出命令执行的结果
%set x 10  //定义变量x,并把x赋值为10   
10
%set y $x+100   //y的值是10+100,这里x被置换成它的值10   
10+100  //此时y是'10+100’这个字符串,并不是110   
  • 命令置换(command substitution)是由[]括起来的Tcl命令及其参数标记,会导致某一个命令的全部或部分单词被另一个命令的结果所代替
%set y [expr $x+100]
110
//[]中脚本的值为最后一个命令的返回值。有了命令置换,实际上就表明命令之间是可以嵌套的,即一个命令的结果可以作为别的命令的参数。
  • 反斜杠置换(backslash substitution)主要用于在单词符号中插入诸如换行符、空格、[、$等被Tcl解释器当作特殊符号对待的字符。
%set msg multiple\ space  //msg的值为multiple space
//如果没有反斜杠的话,解释器会认为最后两个单词之间的空格是分隔符,会认为set命令有多余,就会报错。
图1. 反斜杠
  • Tcl解释器对双引号中的各种分隔符将不做处理,只当做普通字符,除了换行符、$、[]这三个。
  • 花括号中,所有的字符都将成为普通字符,失去其特殊意义。
  • 数组元素的名字包含两部分:数组名和数组中元素的名字。
set day(monday) 1//生成一个名为day的数组和一个数组元素monday,并将值置为1
set day(tuesday) 2//生成一个名为tuesday的数组元素并将值置为2
  • 命令unset,从解释器中删除变量,它后面可以有任意多个参数1,每个参数是一个变量名,可以是简单变量,也可以是数组或数组元素。
%unset a b day(monday)
  • 命令append把文本继续添加到变量后面
%set txt hello
hello
%append txt  "! How are you"
hello! How are you
  • 命令incr把一个变量值加上一个整数,它要求原来的值和新加的值都必须是整数。
%set b 2
2
%incr b 3
5
  • 操作数通常是整数或实数;整数的第一个字符是0则被看做八进制;前两个字符为0x则被看做十六进制的。
  • 运算符和优先级

  • Tcl支持的数学函数



  • 命令list,用来表示集合
  • 命令concat,把多个list合成一个list,每个list变成新list的一个元素
  • 命令lindex,用于从一个列表中取得元素。lindex至少要获取两个参数,即一个列表和一个索引值,并返回从列表中取得的元素
%lindex (John Anne Mary Jim) 1
Anne
  • 命令llength,返回list中元素的个数。
  • 命令linsert,把一个或多个元素插入已经存在的列表,从而形成新的列表
%set x {a b {c d} e}
a b {c d} e
linsert $x 2 X Y Z  //将X Y Z从列表的第二位插入
a b X Y Z {c d} e
  • 命令Ireplace,替换列表中的部分元素
%Ireplace {1 7 8 {9 10} 2 {3 4}} 3 3 //将list中第三位元素删除
1 7 8 2 {3 4}
%Ireplace {1 7 8 2 {3 4}} 4 4 4 5 6//将list中第四位元素用4 5 6替代
1 7 8 2 4 5 6
  • 命令lappend不直接接受列表,而是接受存放的变量
  • 命令Isearch在列表中查找指定的元素。它获取两个参数,第一个是一个列表,第二个是一个模式()
  • 命令Isort将list中的元素按照一定规律排序
  • 命令split把字符串按照字符或者单词分开

没有上机训练很难记住这些语法,并且有些命令貌似是用不到的。先学习到这里。21页左右的地方。

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容