我正在尝试构建一个安全性来检查一个条件是真还是假。这将通过一长串代码多次调用。如果条件为真,则会导致其余代码停止。我似乎无法弄明白。有人能指出我正确的方向吗?顺便说一下,Exit不会工作,因为它会关闭我使用的整个程序。
proc _CheckEsc {} {
if {condition is true} {
return
}
return
}
proc testType {} {
set TestResult 0
while {$TestResult < 10} {
_CheckEsc;
incr TestResult
}
return;
}
答案 0 :(得分:2)
您可以使用_CheckEsc
的一些更高级的功能让return
停止它的来电者。特别是,我们可以使用它来使_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"
}
}
请注意,Tcl 8.4及之前不支持-level
选项;这限制了你可以用它做什么,但你的用例工作,只要你这样做:
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"
}
}
答案 1 :(得分:0)
这样的事情对你有用吗?
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
所做的事情来帮助我们。