Существует ли процедура инициализации пакета Tcl? - PullRequest
1 голос
/ 10 мая 2019

Есть ли способ определить процедуру инициализации, которая автоматически вызывается при загрузке пакета Tcl?

В этом случае мне нужно проанализировать файл конфигурации и установить переменную пространства имен.

Первоначально у меня был код в пространстве имен, вне процедуры, но pkg_mkIndex пытался выполнить код, когда он искал файл и выдавал ошибку «во время поиска».Исходники файла пакета просто отлично с tclsh, и я не уверен, почему это не будет сделано в pkg_mkIndex.

Я могу закомментировать процедуру инициализации для pkg_mkIndex, если это правильный способ сделать это, но мне было интересно, есть ли встроенный способ автоматического запуска процедур инициализации, как в языке C main ().

1 Ответ

1 голос
/ 11 мая 2019

но мне было интересно, есть ли встроенный способ инициализации выполняется автоматически

Обычной практикой является предоставление сценария инициализации как части вашего package ifneeded сценария, например ::

package ifneeded mypkg 1.0.0 "source [list [file join $dir mypkg.tcl]]; source [list [file join $dir myinit.tcl]]"

Использование pkg_mkIndex оказывается не особенно полезным в чем-то нетривиальном, поскольку оно пытается (частично) оценить исходные файлы со всеми их зависимостями. Лучше написать сценарий pkgIndex.tcl и разделить проблемы (определение pkg, инициализация pkg; см. Выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...