Tcl:在更高版本的软件包

时间:2016-09-27 12:45:17

标签: tcl

我是tcl的新手,正在尝试扩展其中一个现有的包。

package provide trial 1.0

namespace eval ::trial {
    namespace export create delete
}

proc ::trial::create { arg1 arg2 } {
    ....
}

proc ::trial::delete { arg1 } {
    ....
}

我想编写package trial 2.0,它可以添加一个proc状态。我怎样才能做到这一点?我怎样才能重载create proc并调用版本1.0 create proc?

提前致谢。

1 个答案:

答案 0 :(得分:0)

对于每个解释器的命名包,最多只需要调用package provide。可以制作描述如何提供相同包的多个版本的pkgIndex.tcl,但这不是常见的事情。如果没有这个,你就会遇到这样一个问题:你不能真正安全地参考另一个版本的软件包的实现,因为你不知道它将被安装在完全相同的地方

相反,通常只复制代码然后才进行修改。试图避免重复一个或两个相当小的文件通常比它的价值更麻烦!

作为一个程序问题,仅添加另一个命令通常只是从1.0转到1.1的原因,而不是转到2.0,因为代码只需要旧接口最有可能与更新版本一起使用。但这取决于添加是否在语义上兼容,并且通常难以使​​代码工作,因为它实际上取决于调用编排模式,并且这可能是非平凡的计算(虽然通常很容易)。