tcl学习之--命名空间

yangykaifa yangykaifa     2022-09-04     421

关键词:

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

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

技术分享技术分享


c++学习之初识命名空间(代码片段)

声明:           本人自学C++,没有计算机基础,在学习的过程难免会出现理解错误,出现风马牛不相及的现象,甚至有可能会贻笑大方。如果有幸C++大牛能够扫到本人的博客,诚心希望大... 查看详情

ros学习之group标签

 <group>标签所述<group>标记使得更容易设置应用到一组节点。它具有ns属性,可以将节点组推送到单独的命名空间中。您还可以使用<remap>标记在组中应用重映射设置。 属性ns=“namespace” (可选)将节点组... 查看详情

tcl学习之--字符串

【字符串操作】Tcl的精髓在于对字符串的处理,非常多函数非常实用。特别是正則表達式。以下列出其经常使用的函数.l stingindex: --> 索引l stingrange: --> 范围l stinglength:--> 长度l stingtoupper和... 查看详情

tcl学习之--列表|字典

【列表|字典】Tcl使用列表来处理各种集合,比方一个目录中的全部文件,以及一个组件的全部选项。最简单的列表就是包括由随意个空格、制表符、换行符、分隔的随意多个元素的字符串。比方:JerryAliceMandyDavidl lindex命令:--&... 查看详情

stl学习之namespace

一、为什么需要命名空间(问题提出)   命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。  在C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引... 查看详情

小白学习之codefirst

CodeFirst约定:注:EDMX模板(SSDL:存储模型=>数据库表 ,CSDL:概念模型=>实体,C-S模型=>存储和概念模型之间的映射关系)System.Data.Entity.ModelConfiguration.Conventions命名空间此命名空间包含描述一组规格的类,在使用codefirst的时候... 查看详情

tcl学习之--表达式

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

c#学习之--hellowworld

这里主要看一下HelloWorld代码//单行注释/*多行注释*////XML文档注释usingSystem;//包含命名空间,类似PHP的useusingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication1//声明命 查看详情

wpf学习之x名称空间详解

X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML代码将XAML代码编译为CLR代码。4.1X名称空间里面到底都有些什么?x名称空间映射的是:http://schemas.microsoft.com/winfx/2006/xaml,望文生义,它包含的类均与解析XA... 查看详情

opencv学习之颜色空间转换cvtcolor()

我们生活中大多数看到的彩色图片都是RGB类型,但是在进行图像处理时,需要用到灰度图、二值图、HSV、HSI等颜色制式,opencv提供了cvtColor()函数来实现这些功能。首先看一下cvtColor函数定义:C++:voidcvtColor(InputArraysrc,OutputArraydst,in... 查看详情

《学习之道》第十章空间宫殿

  要你回想一个你熟悉的空间,然后把它当成视觉形象的记事本,用来存储你想要记住的概念形象。  比如你购物单上的物品(牛奶、面包、鸡蛋),你可以想象门前有一大瓶牛奶,面部掉在沙发上,破鸡蛋的蛋清从咖啡桌... 查看详情

dp学习之装箱问题

CodeVS1014有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。INPUT:VN每个物品的体积OUTPUT:箱子剩余空... 查看详情

《学习之道》第十章视觉和空间记忆的原因

  那些后来的记忆高手,都说老套的形象记忆法能让他们记得更快更轻松。  无论是助记图像、顺口溜、还是假想的“宫殿”,它们之所以会管用,是因为能在你要开小差时帮你集中注意力。  就算起初你编造的字... 查看详情

机器学习之svm(支持向量机)

支持向量机(SVM)是当前非常流行的监督学习方法,其核心主要有两个:构造一个极大边距分离器——与样例点具有最大可能距离的决策边界;将在原输入空间中线性不可分的样例映射到高维空间中,从而进行线性分离。并且使... 查看详情

vslam学习之

相关资料整理CVPR-2014:VisualSLAMTutorial学习SLAM需要哪些预备知识VSLAM简介VSLAM(VisualSimultaneousLocalizationandMapping)是为了解决如何建立目标物体周围的场景的3D模型,同时定位自身的空间位置还原出相机的运动轨迹的问题。... 查看详情

安卓学习之framelayout

将《第一行代码》中的代码输入,并不能得到书上的结果,按钮无论如何都是在图片上面,后来找到http://www.cnblogs.com/DarkMaster/p/4654953.html,将button空间外面包一层         <RelativeLayout6  &n... 查看详情

swift简单学习之struct

一.Struct(结构体)结构体,说白了就是一组变量,这些变量有统一的命名。在Swift中,我们不仅可以在Struct中声明变量并为变量设置默认值,而且可以在Struct中添加相应的函数。接下来我们就要创建一个Point结构体,里边有两个... 查看详情

[no000013f]wpf学习之x名称空间详解

原文:[No000013F]WPF学习之X名称空间详解X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML代码将XAML代码编译为CLR代码。4.1X名称空间里面到底都有些什么?x名称空间映射的是:http://schemas.microsoft.com/winfx/2006/xa... 查看详情