我是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?
提前致谢。
答案 0 :(得分:0)
对于每个解释器的命名包,最多只需要调用package provide
。可以制作描述如何提供相同包的多个版本的pkgIndex.tcl
,但这不是常见的事情。如果没有这个,你就会遇到这样一个问题:你不能真正安全地参考另一个版本的软件包的实现,因为你不知道它将被安装在完全相同的地方
相反,通常只复制代码然后才进行修改。试图避免重复一个或两个相当小的文件通常比它的价值更麻烦!
作为一个程序问题,仅添加另一个命令通常只是从1.0
转到1.1
的原因,而不是转到2.0
,因为代码只需要旧接口最有可能与更新版本一起使用。但这取决于添加是否在语义上兼容,并且通常难以使代码工作,因为它实际上取决于调用编排模式,并且这可能是非平凡的计算(虽然通常很容易)。