您的位置:首页 > 其它

TCL: 变量和过程variable

2015-08-26 18:47 417 查看


名称

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必须符合数组的要求,声明过变量后,数组中的元素可以使用setarray命令来配置。

示例

在名字空间中创建一个变量:
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      }  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: