Пакеты используются для создания повторно используемых блоков кода. Пакет состоит из набора файлов, которые предоставляют определенные функции. Эта коллекция файлов идентифицируется по имени пакета и может иметь несколько версий одних и тех же файлов. Пакет может быть набором сценариев 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]
Вы получите следующий результат —