Tcl中变量的创建、删除和查询
Tcl中的变量可以分为以下几种类型:字符串、整型、实型、列表、数组、字典。
1、变量的定义
Tcl 用 set 命令定义变量,例如:
字符串:set in0 "small random"
整型:set num 3
数组:set anAry(msg) "Hello, World!"
字典:set dict1 [x 1 y 2 z 3]
但是在脚本层面上可以认为 Tcl 只有一种数据类型,就是字符串。 例如下面这条命令定义了一个变量,变量的值是 a 1 b 2 c 3:
set var1 {a 1 b 2 c 3}
那么现在的var1这个变量里面到底存储的是什么类型的数值呢?我们先用几个命令来试试:
% string range $var1 0 3
=> a 1
结论1:var1是字符串类型
% lindex $var1 1
=> 1
结论2:var1是列表类型
% dict get $var1 a
=> 1
结论3:var1是字典类型
因为 Tcl 是弱类型的编程语言,在 Tcl 中一切都是字符串,必要的时候会自动转换成其它相应的类型。弱类型的好处是编程具有很大的灵活性,付出的代价是程序跑得又慢占用的内存又多而且出错的可能性也更大。因此,建议把不需要转换的数据(如expr后面的表达式),放在 { } 里面,这样可以减少数据类型转换,加快计算速度。
2、判断普通变量是否存在
在TCL中使用info exist命令判断普通变量是否存在,如果存在返回1,不存在返回0,例如:
% info exist {a b c}
3、变量的删除
删除变量使用 unset,如果直接使用未定义的变量,会报错。
% unset abc
% puts $abc
=> can't read "abc": no such variable