TCL基本语法

本文介绍了TCL语言的基本语法,包括put和set命令的使用,变量声明、数组操作,字符串和算术操作,以及if、switch和foreach等控制结构。同时涵盖了库函数如lindex在列表处理中的应用。
摘要由CSDN通过智能技术生成

TCL基本语法

输出关键字put

puts hello 
结果 => hello 

puts –nonewline  "hello hello" ;#puts默认输出后换行,加上-nonewline后不换行
结果 => hello hello

输出有空格的文本时需要用双引号或花括号将多个词组织成一个变元,两者区别时在处理“替换操作”时,前者允许发生替换,后者可能阻止替换。

声明变量关键字set

set a Hello;#定义变量a并赋值 
puts $a;#输出变量a的值 
=>Hello
set a "Hello world";#重新赋值 
puts $a;#输出变量a的值,此时要加”$”      
=>Hello world;
puts a;#输出字符a,不加”$“
=> a;
set b $a;#将a的值赋给b
=>Hello world
puts $b;
=>Hello world

声明数组

set qian(0) 1;
set qian(1) 2;#声明数组
set qian(123) f;
set qian(6789) fs;#数组下标可以不按照顺序
set qian(good) yes;#数组下标可以是字符串
puts $qian(123);#输出数组元素qian(123)的值
=>f
puts [array names personA];#输出数组的全部索引
=>0 1 123 6789 good
set qian(1,1,1,1,1) fs;#声明多维数组
parray qian;#使用parray关键字打印出qian数组的所有信息
puts [array size qian];#输出数组qian的元素个数
#使用arrar命令来声明一个数组
array set arrName { index1 value1 index2 value2 ...} 
array set arrName "";#声明一个空数组

替换关键字$

$符实现引用替换,$a等价于变量a的值。TCL对替换只进行一遍解释,忽视嵌套的$

set foo oo 
=>oo 
set dollar foo 
=>foo 
set x $$dollar 
=>$foo;
#只解释一次,将“$dollar”用dollar的值(foo)代替; 
set x {$foo};
#等效为 set x {$foo},花括号阻止替换。  
=>$foo 
set y $x
=>$foo; #一轮替换 

三种括号

set a 123
=>123 
puts "$a";#双引号会替换
=>123
puts {$a};#花括号不会替换
=>$a
set b [set a 5];#先执行方括号内的命令,完成后返回结果,这里是将set a 5命令输出的结果赋给b
=>5 

字符串操作关键字string

#语法
string option string1 string2;#option选择功能
#option的操作选项:
# compare 按照字典的排序方式进行比较。根据string1 <,=,>string2分别返回-1,0,1
# first 返回string2中第一次出现string1的位置,如果没有出现string1则返回-1
# last 和first相反
# trim 从string1中删除开头和结尾的出现在string2中的字符
# tolower 返回string1中的所有字符被转换为小写字符后的新字符串
# toupper 返回string1中的所有字符串转换为大写后的字符串
# length 返回string1的长度

算术操作

#incr语法:
incr variable integer(variable必须为数字)
set a 3;
incr a 3;#将a加3
incr a –3;#将a减3

#expr语法:
expr function number#执行复杂算术(乘除法等)时,必须将expr命令写在算术操作前
set a 20; set b 4;
set c [expr $a/$b]; #此时的c的值为5
#除此之外,expr还能够识别一些函数及其返回值如下:
#abs(x) x的绝对值
#round(x) x四舍五入后得到的整数值
#sin(x) x的正弦值
set a [expr sin(0.3)]; #计算0.3的正弦

判断语句if

if { 表达式 } {
     #运算;
} else { 		#注意:else必须要和if的后面一个{在同一行。
     #其他运算;
}

选择语句switch

switch $x {
  数值1 { 操作1 ;}            
  数值2 { 操作2 ;}
}

循环语句foreach

语法:
foreach var list { proc body };#遍历列表各项,逐次将各元素值存入 var 中并执行 proc body

set lst "1 2 3 4";
结果是=>1 2 3 4

foreach l1 $lst { puts  $l1 };
结果是=>
1
2
3
4

库函数

lindex - 从列表中获得一个元素

lindex {a b c};
      → a b c
lindex {a b c} {};#返回列表本身
      → a b c
lindex {a b c} 0;#返回第一个元素
      → a
lindex {a b c} 2;
      → c
lindex {a b c} end;#返回最后一个函数
      → c
lindex {a b c} end - 1;
      → b
lindex {{a b c} {d e f} {g h i}} 2 1;
      → h
lindex {{a b c} {d e f} {g h i}} {2 1};
      → h
lindex {{{a b} {c d}} {{e f} {g h}}} 1 1 0;
      → g
lindex {{{a b} {c d}} {{e f} {g h}}} {1 1 0};#返回子列表中的函数
      → g
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值