Tcl:在较高版本的软件包中使用较低版本的软件包
问题描述:
我是tcl的新手,并试图扩展其中一个现有的软件包。Tcl:在较高版本的软件包中使用较低版本的软件包
package provide trial 1.0
namespace eval ::trial {
namespace export create delete
}
proc ::trial::create { arg1 arg2 } {
....
}
proc ::trial::delete { arg1 } {
....
}
我想写封装试验2.0,它可以添加一个更多的过程状态。我怎样才能做到这一点?我怎样才能重载创建过程并调用版本1.0创建过程?
在此先感谢。
答
每个解释器最多只需致电package provide
即可获得指定包装。可以制作一个pkgIndex.tcl
来描述如何提供同一个软件包的多个版本,但这不是一件常见的事情。如果没有这些,你就会遇到这样的问题:你不能真正安全地引用另一个版本的包的实现,因为你不知道它将被安装在完全相同的地方。
相反,通常只是复制代码,然后才进行修改。试图避免重复一个或两个相当小的文件通常比它值得的更麻烦!
作为规程,只需添加另一个命令通常将只是理由去从1.0
到1.1
,不去2.0
,因为这只是预计的老接口的代码很可能会做工精细的更新版本。但是这取决于添加是否在语义上是兼容的,并且通常很难让代码适合你,因为它实际上取决于调用编排模式,并且这可能是不重要的计算(尽管通常容易例)。
谢谢唐纳:) – Nand28