如何在从解释器中重命名现有的tcl命令?
换句话说
interp create test
test alias __proc proc
test eval {
__proc hello {} {
puts "hiya"
}
hello
}
不幸的是,这是行不通的。但是,如果我隐藏并公开一个不同的名称,这是可行的。但是,我想同时使用命令proc
和__proc
-所以我更喜欢使用别名,或者任何其他方式.
发布于 2013-09-27 20:14:45
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 }
发布于 2013-09-27 21:23:36
你可以
interp alias test __proc test proc
在主插曲中或
interp alias {} __proc {} proc
在奴隶中,因此以下两张纸片都能工作:
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
。
https://stackoverflow.com/questions/19058961
复制相似问题