我试图建立一个安全,将检查一个条件,将是真或假。这将在一长段代码中被多次调用。如果条件为真,则会导致代码的其余部分停止。我似乎弄不明白。有人能给我指个正确的方向吗?顺便说一句,退出将不起作用,因为它会关闭我使用的整个程序。
proc _CheckEsc {} {
if {condition is true} {
return
}
return
}
proc testType {} {
set TestResult 0
while {$TestResult < 10} {
_CheckEsc;
incr TestResult
}
return;
}
您可以使用return
的一些更高级的特性使_CheckEsc
停止它的调用者。特别是,我们可以用它来使_CheckEsc
像break
或return
一样发挥作用。
这个机制非常类似于在其他语言中抛出异常(事实上,你可以认为Tcl为return
、break
和continue
提供了特殊的异常类,只是事情要比幕后复杂得多)。
使调用者的循环停止
proc _CheckEsc {} {
if {condition is true} {
return -code break
}
}
使调用者返回
proc _CheckEsc {} {
if {condition is true} {
return -level 2
# Or, if you want to return a value from the caller:
### return -level 2 "the value to return"
}
}
注意,-level
选项在Tcl 8.4及之前版本中不支持;这限制了您可以使用它做的事情,但是如果您这样做,您的用例就可以工作:
proc _CheckEsc {} {
if {condition is true} {
return -code return
# Or, if you want to return a value from the caller:
### return -code return "the value to return"
}
}
这样的东西对你有用吗?
proc _CheckEsc {} {
return {condition is true}; # I don't know what you have here
}
proc testType {} {
set TestResult 0
while {_CheckEsc && $TestResult < 10} {
incr TestResult
}
}
你可以通过更具体地说明_CheckEsc
的作用来帮助我们。