我是 TCL 新手,正在尝试设置一个简单的递归循环。我的代码一直运行到递归完成为止,然后它开始抛出错误。这是我的代码:
set testNum 0
proc raiseTest { a } {
puts $a
if { $a == 5 } {
puts "Done!"
} elseif { $a != 5 } {
incr a
puts "Going!"
[raiseTest $a]
}
}
[ raiseTest $testNum ]
一旦 proc 达到 5 并完成最后一个循环,我就会遇到无效的命令名“”错误,然后是大量从内部调用的错误,我不知道为什么。有人可以帮我吗?
两件事情
elseif {$a != 5}
多余的,您可以将其替换为else
为了进一步讨论第 1 点,即 后面的一行
puts "Going!"
,内容如下:该行调用
raiseTest $a
,然后由于方括号的存在,捕获该调用的输出(一个空字符串,因为没有返回任何内容)并将其用作过程的名称并调用它。这是一个例子:
话虽这么说,代码应该如下所示,删除方括号: