如何在从属解释器中重命名现有的tcl命令?
换句话说
interp create test
test alias __proc proc
test eval {
__proc hello {} {
puts "hiya"
}
hello
}
遗憾的是,这不起作用。但是,如果我隐藏并以不同的名称公开。但是,我想使用命令proc
和__proc
- 所以我更喜欢使用别名,或者任何其他方式......
答案 0 :(得分: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 }
答案 1 :(得分:0)
你可以做任何一次
interp alias test __proc test proc
在主要的interp或
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
。