Tcl学习之--命名空间

Tcl解释器将全部的命令和全局变量分组管理。这些小组称为命名空间,一个命名空间中的命令和变量不会影响到还有一个命名空间。这些命名空间呈树形组织。一个命名空间的命令能够被还有一个命名空间引入。命名空间树的根就是全局命名空间,它包括了没有明白在其它命名空间中创建的全部命令和变量。

不论什么已经存在的命名空间中的命令和变量。都能够从命名空间内部或外部创建。

在命令或变量的名称前面加上命名空间前缀就能够完毕这一点。前缀与名称之间以NameSpace::Var来分隔。若全局命名空间的名称是空字符串。通常仅仅写::Var.

命名空间的主要用途是作为创建相关命名包的机制。命名空间能够帮助创建集合命令,把一个命令空间中公共API编组,呈现为公共命令加子命令的模式。

namespace eval: --> 获取命名空间的名称

假设在命名空间中设置新变量,用以下命令:

namespace delete:--> 删除命名空间

variable命令:--> 对命名空间的变量进行设置或訪问

在当前命名空间中创建变量。假设给出变量的值,就设置。假设在该命名空间的一个过程中进行处理,它还会使得指定名称的变量不做限定就在过程中可见.

输出结果:

NOTE:总是使用variable命令声明变量。在一个命名空间中,假设訪问一个没有在该命名空间明白声明的变量,Tcl会首先在全局变量中查找这个名称的变量。假设找到这种全局变量。Tcl会使用它而不是创建一个命名空间变量。

Tcl语言的这种行为初看起来好像不方便,事实上这样设计是为了在各个命名空间中,都能非常easy地訪问提前定义的全局变量argv、env等.

Variable命令不能初始化数组的值。但它能够在命名空间中设置变量,同意过程訪问它们。也就是说,数组须要单独进行一步初始化操作。

输出结果:

namespace qualifiers命令:--> 取得限定名称的命名空间部分

namespace tail命令:--> 取得限定名称的尾部命名空间

要把各部分名称组成限定名称,仅仅须要用文本的::把它们串联起来。

注意:假设把命名空间保持在一个变量中。须要用以下的后一种形式进行变量替换,否则$变量替换时::会引起错误的解析.

namespace export, namespace import命令: --> 导入导出命令

输出结果:

NOTE:

全局命名空间不会默认导出不论什么命令,并且这一命名空间习惯上是留给应用程序脚本管理的。库不应该从全局命名空间导出命令,也不应该向全局命令空间导入命令。

namespace forget命令: -->  防止删除自己创建的命名空间

namespaceimport命令有快照的含义:它仅仅导入在调用它时处于可导出状态的命令。并且,默认情况下它不会覆盖已经存在的命令,即使这些命令是曾经导入的。

能够用 –force选项强制指定进行覆盖。假设希望从命名空间中移除曾经导入的命令,而又怕删掉自己创建的命名空间,应该使用namespace forget命令。

namespace current命令: -->  获取当前命名空间的名称

namespace parent命令: -->  获取当前命名空间的父命名空间

namespace childred命令: -->  获取当前命名空间的子命名空间

info commond命令: -->  查看命名空间中的命令和变量

namespace which命令: --> 获取全然限定名称

namespace origin命令: -->  获取命名空间的来源

NOTE:

namespaceorigin:能够查看命令的原始来源,即使它被重命名过。

namespace ensemble create命令: -->  測试命令

该命令用于測试一个命令是否为集合命令,是则为真。

时间: 2025-01-02 16:27:08

Tcl学习之--命名空间的相关文章

Tcl学习之--语法|变量

[语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令,Tk提供了另外几十条,脚本包含一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也可以写成一行: set a 12; set b 23 每个命令由多个单词组成,以空格来分隔,首字母为命令名,所以: 1. set -> 单词,同时也是命令名 2. a    -> 单词 3. 12  -> 单词,将该值赋予a l 处理命令 Tcl处理命令分两步: 解析和执行 1)  在解析阶段,Tcl进行一系列简单字

Tcl学习之--流程控制|过程

l  switch命令: -->模式匹配 模式匹配,类似于if, elseif, else 第一个参数: 要检测的值 第二个参数: 一个或多个元素对的列表 看下下面三种表示方式: switch支持三种模式匹配的方式: -exact: 严格的字符串比较,默认 -glob: 全局匹配,参见stringmatch -regexp: 正则表达式匹配 --:标记选项结束 NOTE: 通常情况下,应该总是使用-选项来标记选项的结束,确保switch命令都能正确识别检测字符串 l  source命令: : -

Tcl学习之--列表|字典

[列表|字典] Tcl使用列表来处理各种集合,比如一个文件夹中的所有文件,以及一个组件的所有选项.最简单的列表就是包含由任意个空格.制表符.换行符.分隔的任意多个元素的字符串.比如: JerryAlice Mandy David l  lindex命令: --> 获取元素 至少需要两个参数,一个列表和一个索引值,返回取得的元素 如果列表中包含列表的话,访问子列表中的元素就要多个参数 l  llength命令: --> 获取长度 列表命令中可以把一个含有空白符的元素括在括号中,还可以使用反斜线来

Tcl学习之--字符串

[字符串操作] Tcl的精髓在于对字符串的处理,很多函数非常有用,特别是正则表达式.下面列出其常用的函数. l sting index:  --> 索引 l sting range:  --> 范围 l sting length: --> 长度 l sting toupper 和string tolower: --> 大小写 l sting trim. trimleft, trimright:   --> 剪裁 三种剪裁方式,每种方式都需要两个参数:指定字符串,指定裁剪方式.

Tcl学习之--表达式

l 数值操作数 表达式的操作数通常是整数或实数.整数可能是十进制,二进制,八进制或十六进制.比如下面同一个整数 335               --> 十进制 0o517           --> 八进制 0x14f            --> 十六进制 0b10100111 --> 二进制 处理0开头的十进制整数最安全的方法是使用scan命令. 下面就是很常用的例子: l 操作符及其优先级别 Tcl与C类似,相同的优先级符从左到右进行计算.比如:10-4-3与(10-4)

Tcl学习之--文件操作

Tcl中文件名操作遵循Unix/Linux的命名规范. x/y/z表示x目录下的y 子目录及y下面的子目录z. ~admin/email则表示admin用户的email文件夹. l  file join命令: -->  文件名联合 在Windows目录下,\\来代表目录分隔.比如\\192.168.0.1\share,则应该写成\\\\192.168.0.1\\share, 如果考虑使用file split, file join可以将文件和目录跨平台的结合起来.file join命令可以让脚本不

Tcl学习之-- 错误|异常

l  errorInfo: --> 错误信息 如果程序中错,Tcl解析器会将错误反馈给应用程序,由程序决定如何处理.如果没有其他措施的话,一般会将错误信息打印到屏幕上,而这就是errorInfo负责处理的. l  errorCode: --> 错误代码 Tcl提供的另一个全局变量errorCode,该变量提供了有关错误情况的信息.格式易于被Tcl脚本处理:在Tcl脚本中使用catch命令从错误中恢复时常常用到它.errorCode变量包含一个或多个元素构成的列表.第一个元素描述了错误的普通类型

WPF学习——x命名空间

x:Class:告诉XAML编译器将XAML标签的编译结果与后台制定的类合并,这个类必须使用partial关键字. x:ClassModifier:告诉生成的类的访问级别,标签必须具有x:Class Attribute. x:Name: XAML标签对应着一个对象.告诉XAML编译器为这个标签生成对应实例外还要为这个实例声明一个引用变量,变量名是x:Name的值,把 XAML标签对应对象的Name属性也设为x:Name的值,并把这个值注册到UI树上,方便查找. x:FieldModifier:

tcl学习

variables(变量) 语法:set varname value 例如:set a 5 注意:大小写敏感,任意长度,任意字符 使用之前无需申明 substitution(替换) 1 变量值替换 $加变量名 2 命令行替换 使用[]来访问命令结果,可以嵌套 例如set len [string length foo] 3 反斜线替换 避开某些特殊字符,例如显示特殊字符$ grouping(分组) 有双引号的分组支持在组中进行替换(总是允许替换,即使组含有波形括号,也只是把波形括号当做双引号内部的