求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   模型库  
会员   
 


AI 智能化软件测试方法与实践
5月23-24日 上海+在线



人工智能.机器学习TensorFlow
5月22-23日 北京



图数据库与知识图谱
5月22-23日 北京
 
 
 

Tcl 教程
Tcl环境设置
Tcl特殊变量
Tcl基本语法
Tcl命令
Tcl数据类型
Tcl变量
Tcl运算符
Tcl决策
Tcl循环
Tcl数组
Tcl字符串
Tcl列表
Tcl字典
Tcl过程
Tcl包
Tcl命名空间
Tcl文件I/O
Tcl错误处理
Tcl内置函数
Tcl正则表达式
 
 

TCL命名空间
1038 次浏览
41次  

名称空间是一个容器组标识符,用于组变量和程序。命名空间可从Tcl 8.0版开始使用。引入命名空间之前,有一个全局范围。现在有了命名空间,我们可以分区全局范围。

创建命名空间

使用命名空间命令创建命名空间。一个简单的例子,创建命名空间如下图所示

#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
} # Create procedures inside the namespace
proc MyMath::Add {a b } {
set ::MyMath::myResult [expr $a + $b]
}
MyMath::Add 10 23 puts $::MyMath::myResult

当执行上面的代码,产生以下结果:

33

在上面的程序,可以看到有一个变量myResult和程序Add的一个命名空间。这使得创建变量和程序可根据相同的名称在不同的命名空间。

嵌套的命名空间

TCL允许命名空间的嵌套。一个简单的例子,嵌套的命名空间如下。

#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
} namespace eval extendedMath {
# Create a variable inside the namespace
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
}
}
set ::MyMath::myResult "test1"
puts $::MyMath::myResult
set ::extendedMath::MyMath::myResult "test2"
puts $::extendedMath::MyMath::myResult

当执行上面的代码,产生以下结果:

test1
test2

导入和导出空间

可以在前面的例子命名空间看到,我们使用了大量的作用范围解决运算符,它们的使用变得更复杂。我们可以通过导入和导出命名空间避免这种情况。下面给出一个例子。

#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
} # Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
} namespace import MyMath::*
puts [Add 10 30]

当执行上面的代码,产生以下结果:

40

忘记命名空间

可以通过使用forget子删除导入的命名空间。一个简单的例子如下所示。

#!/usr/bin/tclsh
namespace eval MyMath {
# Create a variable inside the namespace
variable myResult
namespace export Add
} # Create procedures inside the namespace
proc MyMath::Add {a b } {
return [expr $a + $b]
}
namespace import MyMath::*
puts [Add 10 30]
namespace forget MyMath::*

当执行上面的代码,产生以下结果:

40

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1038 次浏览
41次
 捐助