Tcl - 包

包用于创建可重用的代码单元.包由一组提供特定功能的文件组成.此文件集合由包名称标识,并且可以具有相同文件的多个版本.该包可以是Tcl脚本,二进制库或两者的组合的集合.

Package使用命名空间的概念来避免变量名和过程名的冲突.在我们的下一个"名称空间"教程中查看更多内容.

创建包

可以在至少两个文件的帮助下创建包. 一个文件包含包代码. 其他文件包含用于声明包的索引包文件.

下面给出了创建和使用包的步骤列表.

步骤1:创建代码

为文件夹内的包创建代码,说HelloWorld.让文件命名为HelloWorld.tcl,代码如下所示 :

# /Users/rajkumar/Desktop/helloworld/HelloWorld.tcl 
# Create the namespace
namespace eval ::HelloWorld {
 
  # Export MyProcedure
  namespace export MyProcedure
 
  # My Variables
   set version 1.0
   set MyDescription "HelloWorld"
 
  # Variable for the path of the script
   variable home [file join [pwd] [file dirname [info script]]]
 
}
 
# Definition of the procedure MyProcedure
proc ::HelloWorld::MyProcedure {} {
   puts $HelloWorld::MyDescription
}

package provide HelloWorld $HelloWorld::version
package require Tcl 8.0


第2步:创建包索引

打开tclsh.切换到HelloWorld目录并使用pkg_mkIndex命令创建索引文件,如下所示 :

% cd /Users/rajkumar/Desktop/helloworld 
% pkg_mkIndex . *.tcl


第3步:向Autopath添加目录

使用lappend命令将包添加到全局列表如下所示 :

% lappend auto_path "/Users/rajkumar/Desktop/helloworld"


第4步:添加包

接下来使用package require语句将包添加到程序中,如下所示 :

% package require HelloWorld 1.0


第5步:调用过程

现在,一切正在设置,我们可以调用我们的程序,如下所示 :

% puts [HelloWorld::MyProcedure]


您将得到以下结果 :

HelloWorld


前两步创建包.创建包后,您可以在任何Tcl文件中使用它,方法是添加最后三个语句,如下所示 :

lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]


您将获得以下结果 :

HelloWorld