Учебники

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: Создание индекса пакета

Откройте тцлш. Перейдите в каталог HelloWorld и используйте команду pkg_mkIndex, чтобы создать индексный файл, как показано ниже —

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

ШАГ 3: Добавление каталога в Autopath

Используйте команду lappend, чтобы добавить пакет в глобальный список, как показано ниже —

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

ШАГ 4: Добавление пакета

Затем добавьте пакет в программу, используя выражение запроса пакета, как показано ниже —

% 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]

Вы получите следующий результат —