是否有一种方法可以定义一个初始化过程,该初始化过程在Tcl程序包加载时自动调用?
在这种情况下,我需要解析配置文件并设置名称空间变量。
我最初在proc之外的命名空间中拥有代码,但是pkg_mkIndex尝试在源文件时抛出代码,并在“采购时”抛出错误。打包文件可以从tclsh中很好地获取,我不确定为什么在pkg_mkIndex中不会这样做。
我可以为pkg_mkIndex注释掉init例程,如果这是正确的方法,但是我想知道是否有一种内置方法可以自动执行init过程,即la C的main()。
答案 0 :(得分:1)
但是我想知道是否有内置的方法来初始化程序 自动执行
通常的做法是在您的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初始化;请参见上文)。