Tcl 错误:can';t重命名为";tmp“读取”命令:命令已存在
假设您重命名了该命令,然后再次尝试重命名该命令,它将显示此错误消息Tcl 错误:can';t重命名为";tmp“读取”命令:命令已存在,tcl,Tcl,假设您重命名了该命令,然后再次尝试重命名该命令,它将显示此错误消息 Error: can't rename to "tmp_read_command": command already exists 您如何第一次而不是第二次重命名它。我的意思是,我们可以设置一个检查条件来确定命令是否存在 详情: 两个文件: 包括.tcl proc snps_read_command { args } { echo "Hi, I am there" eval tmp_read_command } pro
Error: can't rename to "tmp_read_command": command already exists
您如何第一次而不是第二次重命名它。我的意思是,我们可以设置一个检查条件来确定命令是否存在
详情:
两个文件:
包括.tcl
proc snps_read_command { args } {
echo "Hi, I am there"
eval tmp_read_command
}
proc procedure_a { args } {
rename -force read_command tmp_read_command
rename -force snps_read_comamnd read_command
}
source ./include.tcl
procedure_a
source ./include.tcl
procedure_a
read_command
read_command
测试.tcl
proc snps_read_command { args } {
echo "Hi, I am there"
eval tmp_read_command
}
proc procedure_a { args } {
rename -force read_command tmp_read_command
rename -force snps_read_comamnd read_command
}
source ./include.tcl
procedure_a
source ./include.tcl
procedure_a
read_command
read_command
执行上面的TCL脚本会显示以下错误消息:
Error: can't rename to "tmp_command": command already exists
这是因为我调用了两次过程a。第一次,它重新命名,第二次,当它试图重新命名时,它将重新命名。我明白
问题是:
我应该写些什么来避免第二次重命名?我尝试了info命令tmp_read_命令,但没有成功
我们是否可以设置检查条件来确定命令是否存在
检查最简单的方法之一是使用合适的模式查看info命令返回的列表长度。这听起来比普通命令更复杂:
if {[llength [info commands tmp_read_command]]} {
puts "The command tmp_read_command already exists"
}
对于名称中不包含glob元字符的命令(绝大多数命令!),这在字节码级别上是一个非常有效的检查。哦,是的。我没有在代码中使用llength。谢谢