我的问题是我创建了两个版本,即1.1 1.2包 我在1.1和1.2中有相同的程序,但我在1.2中修改了新版本的程序。如何在程序包中使用tcl中的不同版本
现在我的问题是想要访问旧版本(1.1)的程序。我怎样做?
我的问题是我创建了两个版本,即1.1 1.2包 我在1.1和1.2中有相同的程序,但我在1.2中修改了新版本的程序。如何在程序包中使用tcl中的不同版本
现在我的问题是想要访问旧版本(1.1)的程序。我怎样做?
使用-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成分的纯脚本包的工作(依赖于操作系统的动态库加载快乐与这些东西;有些是,有些不是。)
interp create subinterp
subinterp eval {
package require -exact mypackage 1.1
}
subinterp eval mySquare 3
这可能或者可能不是你想要的;口译员是非常彼此强烈隔离,因此访问其他事情在主翻译进行将需要建立别名...