TCL: 变量和过程variable
2015-08-26 18:47
417 查看
如果变量name不存在,就创建一个,在这种情况下,如果指定了value,就把它的值赋值给创建的变量,如果不指定value,新的变量name就没有初始化。如果变量已经存在,就赋值value,没有指定value则保持原来的值。一般来说name不做任何限定(不包含名字空间限定),并且在当前名字空间中创建,如果name包含有名字空间限定,变量就创建在指定的名字空间中,如果变量没有定义,对于namespace which命令来说就是可见的,但是对info exists命令来说是不可见的。
如果variable命令在一个tcl过程中执行,就创建一个局部变量,这个局部变量链接一个相关的名字空间变量(因此这些变量由info vars列出),这样variable命令类似global命令,虽然global命令只是链接一个在全局范围内的变量,如果给出了values,就用来修改相关名字空间变量,如果一个名字空间变量不存在,就创建一个并且初始化。
name变元不能引用一个数组的元素,但是name可以引用整个数组并且初始化的value必须符合数组的要求,声明过变量后,数组中的元素可以使用set和array命令来配置。
名称
variable - 创建和初始化一个名字空间变量语法
variable ?name value...? name ?value?描述
这个命令一般在名字空间中创建一个或多个变量,每个变量name使用value初始化,最后一个变量的value是可选的。如果变量name不存在,就创建一个,在这种情况下,如果指定了value,就把它的值赋值给创建的变量,如果不指定value,新的变量name就没有初始化。如果变量已经存在,就赋值value,没有指定value则保持原来的值。一般来说name不做任何限定(不包含名字空间限定),并且在当前名字空间中创建,如果name包含有名字空间限定,变量就创建在指定的名字空间中,如果变量没有定义,对于namespace which命令来说就是可见的,但是对info exists命令来说是不可见的。
如果variable命令在一个tcl过程中执行,就创建一个局部变量,这个局部变量链接一个相关的名字空间变量(因此这些变量由info vars列出),这样variable命令类似global命令,虽然global命令只是链接一个在全局范围内的变量,如果给出了values,就用来修改相关名字空间变量,如果一个名字空间变量不存在,就创建一个并且初始化。
name变元不能引用一个数组的元素,但是name可以引用整个数组并且初始化的value必须符合数组的要求,声明过变量后,数组中的元素可以使用set和array命令来配置。
示例
在名字空间中创建一个变量:namespace eval foo { variable bar 12345 }在名字空间中创建一个数组:
namespace eval someNS { variable someAry array set someAry { someName someValue otherName otherValue } }为一个过程存取名字空间中的变量:
namespace eval foo { proc spong {} { # Variable in this namespace variable bar puts "bar is $bar" # Variable in another namespace variable ::someNS::someAry parray someAry } }
相关文章推荐
- jquery实现图片预加载提高页面加载速度
- C++11新特性之Lambda函数
- gsoap快速webservice服务开发
- 单定义规则与作用域
- ant exec inputstring给sudo命令输入密码
- IE8里判断当前网页显示模式
- URL编码与解码
- Mysql获取数据,汉字显示???????
- 常用linux命令总结(二)nginx日志分析命令
- Android 动画录制 GIF录制
- Kinetis K系列产生两路正交PWM波
- TIMER门控模式控制PWM输出长度
- 卸载JDK,提示“JDK Windows Installer 程序包有问题。此安装需要的DLL不能运行。”
- MMSeg4j 分词器
- 好团队不可能凭空出现,赢在Leader的可行规划 [Y]
- Android安卓四大组件
- Git本地操作<1>
- 哈理工oj Hrbustacm 1287 数字去重和排序II(STL 或着 hash 拉链法)
- hdu 5396 Expression(区间dp+组合数)
- Kafka简介及集群搭建详细流程