2014-07-12 52 views

回答

0

將您的問題中的'have'解釋爲'use',答案是否定的。包機制在每個包名稱唯一的數據庫中查找包。將Foo包中的內容放在名稱空間Foo中是一個有用的約定,但名稱空間對包查找沒有影響。也就是說,我相信你可以在不同的命名空間中放置不同的版本的包,但是你仍然可以一次只能使用一個版本。

0

一次只能在解釋器中安裝一個版本的軟件包。包由它們的名稱來標識,並且這完全獨立於它們使用的名稱空間。你可以在同一個過程中使用不同的版本加載到不同的解釋器中(你需要interp create-exact標記到package require來選擇精確的版本而不是「最好的」版本),但是這將會非常糟糕。

如果您擁有的代碼在同一解釋器中同時激活多個實例是有意義的,那麼該包實際上應該最初爲這些實例定義一個工廠。考慮使用類(參見[incr Tcl],XOTcl,TclOO,Snit,...)

+0

tcllib pluginmgr包實際使用了在不同解釋器中加載不同版本的技巧。 – schlenk

+0

@schlenk這種方式是瘋狂的(正如我從Java中看到的糾結中知道的那樣) –

相關問題