所以我对TCL编程的方式非常陌生。我写了一个脚本,调用别人写的proc,首先删除输出文件。然后它会执行我编写的一些附加逻辑。
我将逻辑移到了第二个 proc 中,然后其中的一部分立即损坏了(即 rm 命令)。
据我所知,中央执行内部的第一个程序(proc定义后面的文本)在没有“exec”命令的情况下正常执行。但是,如果将它移动到 proc 中,它现在需要一个“exec”命令。
谁能向我解释为什么 TCL 会这样?
例如
proc helloworld {} {
puts "hi"
}
#works
rm my_file
helloworld
..
proc helloworld {} {
#doesn't work
rm my_file
puts "hi"
}
helloworld
..
proc helloworld {} {
#works
eval rm my_file
puts "hi"
}
helloworld
..
proc helloworld {} {
#works
file delete my_file
puts "hi"
}
helloworld
*请注意,这种奇怪的行为可能特定于我将脚本提供给 vmd 的程序,它有自己的内置 TCL 行为。也许在您的回复中您可以指出这是否也是其他口译员的标准?