我的問題是我創建了兩個版本,即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
這可能或者可能不是你想要的;口譯員是非常彼此強烈隔離,因此訪問其他事情在主翻譯進行將需要建立別名...