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
廣告