2013-09-27 150 views
0

如何在從解釋器中重命名現有的tcl命令?使用tcl interp別名重命名內置命令的tcl

換句話說

interp create test 
test alias __proc proc 

test eval { 
    __proc hello {} { 
    puts "hiya" 
    } 
    hello 
} 

這不幸的是不起作用。但是,如果我隱藏並以另一個有效的名稱公開。但是,我想用這兩個命令proc__proc - 所以我寧願使用別名,或任何其他方式...

回答

0

在Tcl解釋的alias命令允許您以引起翻譯創建命令代碼在不同的解釋器中運行。所以這不是你想要的。

我認爲有以下你想要做什麼:

interp create test 

test eval { 
    rename proc __proc 

    __proc hello {} { 
     puts "hiya" 
    } 

    hello 
} 

然後,您可以用proc命令的重命名合併解釋的創建如下:

proc myinterp {interpName newProcName} { 
    interp create $interpName 
    $interpName eval "rename proc $newProcName" 
} 

myinterp test func 

test eval { func greet {} { puts "hello" } } 
test eval (greet } 
+0

哦,我明白了。是否有可能讓proc和__proc在同一個解釋器中工作?那麼,func和proc可以在測試中工作? – user2824828

+0

沒關係了! interp alias interpname __proc interpname proc – user2824828

0

您可以執行

interp alias test __proc test proc 

in the main interp or

interp alias {} __proc {} proc 
在從

,所以兩個以下scrips的工作:

interp create test 
interp alias test __proc test proc 

test eval { 
    __proc hello {} { 
    puts "hiya" 
    } 
    hello 
} 

interp create test 

test eval { 
interp alias {} __proc {} proc 
    __proc hello {} { 
    puts "hiya" 
    } 
    hello 
} 

test alias __proc proc相同interp alias test __proc {} proc,這意味着__proc在從將調用proc在主人。