如何在从解释器中重命名现有的 tcl 命令?
换句话说
interp create test
test alias __proc proc
test eval {
__proc hello {} {
puts "hiya"
}
hello
}
不幸的是,这不起作用。但是,如果我以其他有效的名称隐藏和公开。但是,我想同时使用这两个命令proc
-__proc
所以我更喜欢使用别名或任何其他方式......
如何在从解释器中重命名现有的 tcl 命令?
换句话说
interp create test
test alias __proc proc
test eval {
__proc hello {} {
puts "hiya"
}
hello
}
不幸的是,这不起作用。但是,如果我以其他有效的名称隐藏和公开。但是,我想同时使用这两个命令proc
-__proc
所以我更喜欢使用别名或任何其他方式......
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 }
你可以做
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
在slave中会调用proc
master。