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命令: -->  測试命令

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

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

  1. Tcl学习之--语法|变量

    [语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令.Tk提供了另外几十条,脚本包括一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也能够写成一行: set a ...

  2. ThinkPHP5.0学习1 — 命名空间

    定义命名空间:namespace sp1: 访问命名空间:\sp1\somefunction(); 非限定名称访问方式     //访问当前命名空间内容:somefunction(); 限定名称访问方 ...

  3. TinkPHP框架学习-04命名空间

    1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...

  4. Tcl学习之--列表|字典

    [列表|字典] Tcl使用列表来处理各种集合,比方一个目录中的全部文件,以及一个组件的全部选项.最简单的列表就是包括由随意个空格.制表符.换行符.分隔的随意多个元素的字符串.比方: JerryAlic ...

  5. Tcl学习之--文件操作

    Tcl中文件名称操作遵循Unix/Linux的命名规范. x/y/z表示x文件夹下的y 子文件夹及y以下的子文件夹z. ~admin/email则表示admin用户的email目录. l  file ...

  6. C++学习之命名空间

    在C++中,命名空间(namespace)的目的是为了防止名字冲突.每个命名空间是一个作用域,在所有命名空间之外,还存在一个全局命名空间(global namespace),全局命名空间以隐式的方式声 ...

  7. Tcl学习之--表达式

    l 数值操作数 表达式的操作数一般是整数或实数.整数可能是十进制.二进制,八进制或十六进制. 比方以下同一个整数 335               --> 十进制 0o517         ...

  8. tcl学习

    variables(变量) 语法:set varname value 例如:set a 5 注意:大小写敏感,任意长度,任意字符 使用之前无需申明 substitution(替换) 1 变量值替换 $ ...

  9. aforge 学习-命名空间中文理解

    序列 名称 介绍 1 Aforge AForge   AForge名称空间的核心名称空间.微软网络框架,其中包含核心类所使用的其他框架的命名空间和类,可以独立用于各种用途. 2 AForge.Cont ...

随机推荐

  1. Python操作远程数据库

    我的项目要往数据库中插入create_time和update_time,那就势必要引用现在的系统时间,经过大量的查找,终于发现往python是没有对应时间datetime的相关通配符的,那么我们要怎么 ...

  2. iframe子页面让父页面跳转 parent.location.href

    if ($roleNum < 9) { echo "<script > parent.location.href='admin_login.php' </script ...

  3. 如何在mybatis中引用java中的常量和方法

    转自:http://www.68idc.cn/help/jiabenmake/qita/20140821125261.html 在mybatis的映射xml文件调用java类的方法: 1. SELEC ...

  4. LR性能分析随笔(一)

    一.关键词 吞吐量:对于吞吐量,单位时间内吞吐量越大,说明服务器的处理能力越好:而请求数仅表示客户端向服务器发出的请求数,与吞吐量一般成正比关系. HTTP:HTTP404表示文件或目录没有找到.有些 ...

  5. mybatis 使用参数

    Parameter  1.   传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne(&q ...

  6. 打造完美的ImageLoader——LruCache+DiskLruCache

    做android应用少不了要和网络打交道,在我刚开始学android的时候总是处理不好网络图片的加载,尤其是图片乱跳的问题,后来发现了各种缓存图片的方法:本地缓存.软引用.LruCache.... 我 ...

  7. vuecli开发项目,文件打包后,appjs/vendorjs文件过大

    项目上线后,浏览器第一次加载会特别特别慢,network中看到vendorjs文件1.9M,不慢才怪. echarts按需引入后,也有1.1M左右,由于对vue脚手架理解不深,自己扒了大量的文档,又测 ...

  8. page对象的使用及常见方法

    page对象的使用及常见方法 制作人:全心全意 page对象代表JSP本身,只有在JSP页面内才是合法的.page对象本质上是包含当前Servlet接口引用的变量,可以看作是this关键字的别名. p ...

  9. Navicat premium连接Oracle报ORA-12541错误

    1:ORA-12541 原因:Oracle TNS监听服务没开 解决:

  10. Ajax_使用 jQuery 实现Ajax

    [jQuery中的Ajax] 1.jQuery对Ajax操作进行了封装,在jQuery中最底层的方法时 $.ajax().第二层是 load() , $.get()  和 $.post(),第三层是 ...