如何在tcl中使用不同版本的包中的过程

如何在tcl中使用不同版本的包中的过程,tcl,Tcl,我的问题是,我已经创建了两个版本,即1.1.2包 我在1.1和1.2中有相同的过程,但我在1.2中修改了新版本的过程 现在我的问题是假设想要访问旧版本(1.1)的过程。如何操作?在package require语句中使用-exact标志: package require -exact mypackage 1.1 更新: 我不建议一个接一个地加载同一个包的不同版本。但是,您可以加载第一个版本,完成您的业务,卸载它,然后加载第二个版本并完成您的业务。代码: package require -exa

我的问题是,我已经创建了两个版本,即1.1.2包 我在1.1和1.2中有相同的过程,但我在1.2中修改了新版本的过程


现在我的问题是假设想要访问旧版本(1.1)的过程。如何操作?

在package require语句中使用-exact标志:

package require -exact mypackage 1.1
更新: 我不建议一个接一个地加载同一个包的不同版本。但是,您可以加载第一个版本,完成您的业务,卸载它,然后加载第二个版本并完成您的业务。代码:

package require -exact mypackage 1.1
mySquare 2
package forget mypackage

package require -exact mypackage 1.2
mySquare 3

在包require语句中使用-exact标志:

package require -exact mypackage 1.1
更新: 我不建议一个接一个地加载同一个包的不同版本。但是,您可以加载第一个版本,完成您的业务,卸载它,然后加载第二个版本并完成您的业务。代码:

package require -exact mypackage 1.1
mySquare 2
package forget mypackage

package require -exact mypackage 1.2
mySquare 3

每个解释器只能加载任何特定包的单个版本;假设它们的名称空间冲突,因此不可能同时加载同一事物的两个版本

但是,您可以在子解释器中加载其他版本(使用
-exact
选项强制加载较新的版本)。与具有C组件的软件包相比,使用纯脚本软件包更容易(这取决于操作系统的动态库加载器对这些东西是否满意;有些是,有些不是。)


这可能是你想要的,也可能不是;口译员彼此之间非常隔离,因此访问主口译员中的其他内容需要设置别名…

每个口译员只能加载任何特定软件包的单个版本;假设它们的名称空间冲突,因此不可能同时加载同一事物的两个版本

但是,您可以在子解释器中加载其他版本(使用
-exact
选项强制加载较新的版本)。与具有C组件的软件包相比,使用纯脚本软件包更容易(这取决于操作系统的动态库加载器对这些东西是否满意;有些是,有些不是。)

这可能是你想要的,也可能不是;解释器彼此非常隔离,因此访问主解释器中的其他内容需要设置别名