Tcl - 包



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

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

创建包

可以使用至少两个文件来创建包。一个文件包含包代码。另一个文件包含用于声明包的索引包文件。

下面列出了创建和使用包的步骤。

步骤 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
广告

© . All rights reserved.