package
Команда загрузки пакетов библиотек и контроля версий.
СИНТАКСИС
package
forget package
package ifneeded
package version?script?
package names
package provide
package?version?
package require?
-exact? package?version?
package unknown?
command?
package vcompare
version1 version2
package versions
package
package vsatisfies
version1 version2
ОПИСАНИЕ
Команда поддерживает простую базу данных со сведениями
о том, какие пакеты библиотечных функций доступны для использования в данном
интерпретаторе, и как их загрузить в интерпретатор. Она поддерживает многоверсионность
пакетов и гарантирует загрузку в приложение необходимой версии пакета. При этом
она обеспечивает контроль непротиворечивости версий. Обычно в Tcl-скриптах достаточно
использовать команды package require и package provide. Остальные
команды предназначены в первую очередь для системных скриптов, которые поддерживают
базу данных пакетов.
Поведение команды package определяется
ее первым аргументом. Ниже описаны возможные формы команды.
package
forget package
Удаляет информацию о пакете из интерпретатора,
включая как информацию, возвращаемую командой package ifneeded, так
и информацию, возвращаемую командой package provide.
package ifneeded
package version?script?
Команда используется в системных скриптах.
Если указана конкретная версия и скрипт, заносит в базу данных информацию
о том, что соответствующая версия пакета доступна и может быть загружена в
интерпретатор с помощью скрипта script. Если в базе данных уже хранится
информация о скрипте, она обновляется. Если скрипт не указан, возвращается
текущий скрипт.
package names
Возвращает список всех пакетов в интерпретаторе,
для которых известна доступная версия (заданная с помощью команды package
provide) или скрипт загрузки (заданный командой package ifneeded).
package provide
package?version?
Команда используется для того, чтобы указать,
что версия version пакета package загружена в интерпретатор.
Если ранее была загружена другая версия, возвращает ошибку. Если версия не
указана, возвращает загруженную версию.
package require?-exact ?
package?version?
Команда используется, если для выполнения
дальнейшего кода необходим библиотечный пакет package версии version.
Команда возвращает номер загруженной версии или ошибку. Если присутствуют
оба аргумента -exact и version, то команда загружает
именно указанную версию (или выдает ошибку, если эта версия недоступна). Если
присутствует номер версии, а -exact опущено, то команда загружает
указанную версию или более позднюю, но с тем же старшим номером версии (2.7,
но не 3.1, когда указана версия 2.5).
Если база данных не содержит необходимой версии,
а в интерпретаторе определена команда для packageunknown (см. ниже),
то она исполняется, после чего повторно проверяется доступность необходимой
версии. Если версия по-прежнему недоступна, команда возвращает ошибку.
package unknown
?command?
Команда “последней надежды” при поиске необходимой
версии пакета. Если аргумент command указан, то он дополняется именем
пакета и версии и полученный скрипт выполняется. Если версия не указана, подставляется
пустая строка.
Если аргумент command не указан, возвращает
текущий скрипт, заданный для команды package unknown.
package vcompare
version1 version2
Команда сравнения версий. Возвращает ‘-1’,
если version1 более ранняя версия, чем version2, ‘1’
— в противном случае, и ‘0’, если они равны.
package versionspackage
Возвращает список всех доступных версий пакета
(информация о которых занесена в базу данных с помощью команды package
ifneeded).
package vsatisfiesversion1
version2
возвращает ‘1’, если у version1
и version2 совпадают старшие номера, а младший номер у version1 не
меньше, чем у version2, и ‘0’ — в противном случае.
ИНДЕКСЫ ПАКЕТОВ
Рекомендованный способ работы с пакетами
в Tcl состоит в том, чтобы включать в скрипты команды package
require и package provide, и
использовать процедуру pkg_mkIndex (см. соответствующие
пункты) для создания индексных файлов для пакетов. Это обеспечивает автоматическую
загрузку необходимых пакетов.
См.также close(n),
filename(n), gets(n),
read(n), puts(n), exec(n)
[ Список команд Tcl ]
[ Содержание ]