2014-07-12 54 views

回答

0

将您的问题中的'have'解释为'use',答案是否定的。包机制在每个包名称唯一的数据库中查找包。将Foo包中的内容放在名称空间Foo中是一个有用的约定,但名称空间对包查找没有影响。也就是说,我相信你可以在不同的命名空间中放置不同的版本的包,但是你仍然可以一次只能使用一个版本。

0

一次只能在解释器中安装一个版本的软件包。包由它们的名称来标识,并且这完全独立于它们使用的名称空间。你可以在同一个过程中使用不同的版本加载到不同的解释器中(你需要interp create-exact标记到package require来选择精确的版本而不是“最好的”版本),但是这将会非常糟糕。

如果您拥有的代码在同一解释器中同时激活多个实例是有意义的,那么该包实际上应该最初为这些实例定义一个工厂。考虑使用类(参见[incr Tcl],XOTcl,TclOO,Snit,...)

+0

tcllib pluginmgr包实际使用了在不同解释器中加载不同版本的技巧。 – schlenk

+0

@schlenk这种方式是疯狂的(正如我从Java中看到的纠结中知道的那样) –

相关问题