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 步:将目录添加到自动路径
使用 lappend 命令将包添加到全局列表中,如下所示 −
% lappend auto_path "/Users/rajkumar/Desktop/helloworld"
第 4 步:添加包
接下来使用 package require 语句将包添加到程序中,如下所示 −
% package require HelloWorld 1.0
第 5 步:调用过程
现在,一切都已设置完毕,我们可以调用我们的程序,如下所示 −
% puts [HelloWorld::MyProcedure]
You will get the following result −
HelloWorld
前两步创建包。 创建包后,您可以通过添加最后三个语句在任何 Tcl 文件中使用它,如下所示 −
lappend auto_path "/Users/rajkumar/Desktop/helloworld" package require HelloWorld 1.0 puts [HelloWorld::MyProcedure]
您将得到以下结果 −
HelloWorld