是否有 Tcl 包初始化程序?
Is there a Tcl package init procedure?
有没有办法定义在加载 Tcl 包时自动调用的初始化过程?
在这种情况下,我需要解析一个配置文件并设置一个命名空间变量。
我最初在名称空间中有代码,在 proc 之外,但是 pkg_mkIndex 试图在获取文件时执行代码并抛出错误 "while sourcing"。包文件源来自 tclsh,我不确定为什么它不会在 pkg_mkIndex.
内这样做
为了 pkg_mkIndex 的缘故,我可以注释掉 init 例程,如果这是这样做的正确方法,但我想知道是否有一种内置的方法可以自动执行 init 过程,a la C 的 main().
but I wondered if there's a built-in way to have init procedures
executed automatically
提供初始化脚本作为 package ifneeded
脚本的一部分是常见的做法,例如:
package ifneeded mypkg 1.0.0 "source [list [file join $dir mypkg.tcl]]; source [list [file join $dir myinit.tcl]]"
事实证明,使用 pkg_mkIndex
对任何事情都没有特别的帮助 non-trivial,因为它试图(部分)评估源文件及其所有依赖项。更好地手工制作 pkgIndex.tcl
脚本并分离关注点(pkg 定义、pkg 初始化;见上文)。
有没有办法定义在加载 Tcl 包时自动调用的初始化过程?
在这种情况下,我需要解析一个配置文件并设置一个命名空间变量。
我最初在名称空间中有代码,在 proc 之外,但是 pkg_mkIndex 试图在获取文件时执行代码并抛出错误 "while sourcing"。包文件源来自 tclsh,我不确定为什么它不会在 pkg_mkIndex.
内这样做为了 pkg_mkIndex 的缘故,我可以注释掉 init 例程,如果这是这样做的正确方法,但我想知道是否有一种内置的方法可以自动执行 init 过程,a la C 的 main().
but I wondered if there's a built-in way to have init procedures executed automatically
提供初始化脚本作为 package ifneeded
脚本的一部分是常见的做法,例如:
package ifneeded mypkg 1.0.0 "source [list [file join $dir mypkg.tcl]]; source [list [file join $dir myinit.tcl]]"
事实证明,使用 pkg_mkIndex
对任何事情都没有特别的帮助 non-trivial,因为它试图(部分)评估源文件及其所有依赖项。更好地手工制作 pkgIndex.tcl
脚本并分离关注点(pkg 定义、pkg 初始化;见上文)。