使用 Tcl 信息过程 return 值

Using Tcl info procs return value

考虑到 not_there 不是我期望的过程

[info procs not_there] eq ""

到 return 0,但我看到了

empty command name ""

有人可以解释我的概念错误吗?

你的这句话:

[info procs not_there] eq ""

将首先由 Tcl 解释器计算 info procs not_there。接下来解释器将评估这个语句的等价物:

"" eq ""

...第一个词 "" 不是有效命令。

在 Tcl 语句中,第一个单词必须始终是命令。命令 arg arg arg...

你缺少的是在开头使用 expr 命令

expr {"" eq ""}                       --> 1
expr {[info procs not_there] eq ""}   --> 1

顺便说一下,expr 隐含在 if 语句的条件参数中:

if {[info procs not_there] eq ""} {
     puts "This is not a proc"
}