📅  最后修改于: 2020-10-16 06:29:27             🧑  作者: Mango
包用于创建可重用的代码单元。程序包由一组提供特定功能的文件组成。该文件集合由包名称标识,并且可以具有相同文件的多个版本。该软件包可以是Tcl脚本,二进制库或两者的组合的集合。
包使用命名空间的概念来避免变量名和过程名的冲突。在我们的下一个“名称空间”教程中进一步了解。
可以使用最少两个文件创建一个包。一个文件包含软件包代码。其他文件包含用于声明您的程序包的索引程序包文件。
下面列出了创建和使用包的步骤。
在名为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
打开tclsh。切换到HelloWorld目录,并使用pkg_mkIndex命令创建索引文件,如下所示-
% cd /Users/rajkumar/Desktop/helloworld
% pkg_mkIndex . *.tcl
使用lappend命令将软件包添加到全局列表,如下所示-
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
接下来使用package require语句将包添加到程序中,如下所示-
% package require HelloWorld 1.0
现在,一切都已设置,我们可以如下所示调用我们的过程-
% puts [HelloWorld::MyProcedure]
您将获得以下结果-
HelloWorld
前两个步骤创建了程序包。创建包后,可以通过添加最后三个语句在任何Tcl文件中使用它,如下所示-
lappend auto_path "/Users/rajkumar/Desktop/helloworld"
package require HelloWorld 1.0
puts [HelloWorld::MyProcedure]
您将获得以下结果-
HelloWorld